Node.js
https://gyazo.com/155735f0d75620d88f2030f880fe5cbd
Node.js とは
Node はスケーラブルなネットワークアプリケーションを構築するために設計された非同期処理 asynchronous型のイベント駆動の JavaScriptによるBack-end バックエンド環境
Docs | Node.js
nodejs/node: Node.js JavaScript runtime
特徴
最小限のコアとモジュール modulesエコシステム
npm Package Managers パッケージマネージャー
nvm バージョン管理
シングルスレッド Single Thread
Event Loop イベントループ
ノンブロッキング I/O
必要状況
プラットフォーム問題
FaaS Function as a Serviceが使えないなど
開発メンバーの多くがJavaScript第1言語
技術間差異の吸収
アーキテクチャ
https://i.stack.imgur.com/u1O2O.png
V8
JavaScriptエンジン Engine
libuv
様々なOSでノンブロッキング I/O行えるようにするライブラリ
バージョン
安定版 12.13
前安定版:10.16あたり
これら周辺以外使わないこと!!
Releases | Node.js
nvmで変更
code:nvm.sh
nvm list //インストールされてるnodeリスト
nvm use v12.12.0
モジュール
exports
使用例:require()の戻り値をを普通のオブジェクトにしたい時
現在のモジュールの全てのインスタンス間で共有されるオブジェクト
require を通じてアクセス可能
exports は実際はグローバルではなく、各モジュール毎のローカル
オブジェクトしかだめな理由
exports には module.exports = {} の空のオブジェクトが渡されているので、そのオブジェクトのプロパティを変更した時のみ module.exports に反映されて require() の戻り値として扱うことができるということ
💯module.exports
使用例:require()の戻り値をコンストラクタ関数や配列や文字列など別のものにしたい時
現在のモジュールへの参照
module は実際はグローバルではなく、各モジュール毎のローカル
require()
code:modules.js
参考
💯💯Node.js : exports と module.exports の違い(解説編) - ぼちぼち日記
標準モジュール
File System (fs) Node
File System | Node.js v12.12.0 Documentation
ファイル システムを操作するために使用
HTTP (http) Node
HTTP | Node.js v12.12.0 Documentation
Path(path) Node
Path | Node.js v13.0.1 Documentation
ファイルの絶対パスを決定するために必要
URL(url) Node
request(Rejectになりました)
node コマンド
シングルプロセス シングルスレッド Single Thread
エラーなどでプロセスが落ちると停止する
更新する際にダウンタイムが発生
サーバー運用などでは、pm2といったprocess manager プロセスマネージャーで起動
学習場所
公式API
ドキュメント | Node.js
チュートリアル
Introduction to Node.js
公式webschool
NodeSchool
フレームワーク、ライブラリ
Express.js
NestJS
実装例
GitHub.iconKiichiSugihara/vue-login: JWT Auth Project by Vue.js & Express& MongoDB
参考レポジトリ
goldbergyoni/nodebestpractices: The largest Node.js best practices list (January 2020)
参考記事
Node.jsを学ぶ中で必ず押さえておきたいこと - Qiita
💯Node.jsの勉強会でお手軽にWebアプリを作った話 - RAKUS Developers Blog | ラクス エンジニアブログ
2ファイルでさくっと、nodejs楽しめてよかった。
NestJS meetup Tokyo Opening Talk / What is NestJS? #nestjs_meetup - Speaker Deck
Node.js徹底攻略 ─ ヤフーのノウハウに学ぶ、パフォーマンス劣化やコールバック地獄との戦い方 - エンジニアHub|若手Webエンジニアのキャリアを考える!
学ぶべきモジュールの所よかった