#はじめに
先週ぐらいからNode.jsの参考書を読み始め、途中から
「■■ = require('〇〇')」
というのが連発してきて、いろんな種類のAPIが使えるのだと知りました。
参考書の最初は「require('events')」や「require('http')」を使っていて、
他にどんなAPIが使えるのか気になり、一覧としてまとめてみました。
※初学者のため誤りがあると思います。
間違いはコメントしていただけると幸いです。
#本題の前に
本題の前に、「require」について少しだけ触れておきます。
requireとは、モジュール化されたJavaScriptのファイルをNodeから読み込んで利用できるようにしてくれるものです。
npmを使ってインストールしてきたパッケージを利用する際にもこの「require」を使用します。
著者は普段、C言語を使用していますので、この「require」はC言語のインクルードみたいなものだと理解しています。(あくまでもイメージです。)
本記事は、Nodeをインストールしたらデフォルトで使用できるモジュールについて一覧にしてみました。
#Nodeモジュール一覧
下表はNode.js v12.18.2 ドキュメントを参考にまとめました。
公式ドキュメントにはそのAPIの安定性が記載されています。
簡単にまとめると、
安定性:0 - 非推奨
安定性:1 - 実験的
安定性:2 - 安定
(詳しくは ⇒ 公式ドキュメント)
使いたいAPIは、「require('下表のAPI名')」を書けば使えます。
API | API名 | 安定性 | 説明 |
---|---|---|---|
Assertion Testing | assert | 2 | アサーションモードの使用 |
Async Hooks | async_hooks | 1 | 非同期リソースの追跡 |
Buffer | buffer ※1 | 2 | バイナリデータを一連のバイト形式に変換 |
C++ Addons | ./build/Release/addon ※2 | 2 | C++で記載されたアドオンをロード |
Child Processes | child_process | 2 | 子プロセスを生成 |
Cluster | cluster | 2 | サーバポートを共有する子プロセスを生成 |
Console | console ※1 | 2 | 単純なデバッグコンソール |
Crypto | crypto | 2 | 暗号化機能 |
DNS | dns | 2 | 名前解決 |
Domain | domain | 0 | 複数の異なるIO操作の処理 |
Events | events | 2 | イベント処理 |
File System | fs | 2 | ファイルシステム操作 |
HTTP | http | 2 | HTTPインタフェース |
HTTP/2 | http2 | 2 | HTTP/2プロトコルの実装 |
HTTPS | https | 2 | httpsインタフェース |
Inspector | inspector | 1 | V8インスペクターとの対話 |
Net | net | 2 | TCPまたはIPCサーバ・クライアントの作成 |
OS | os | 2 | OS関連のユースティリティ |
Path | path | 2 | ファイルおよびディレクトリパス操作 |
Process | process ※1 | 記載なし | プロセス制御 |
Punycode | punycode | 0 | Punycodeモジュールのバンドル |
Query Strings | querystring | 2 | 食える文字列の解析及びフォーマット |
Readline | readline | 2 | ストリームから1行ずつデータ読み取り |
REPL | repl | 2 | REPLの実装 |
Stream | stream | 2 | ストリーミングデータの操作 |
String Decoder | string_decoder | 2 | 文字列にデコード |
Timers | timers ※1 | 2 | スケジュール操作 |
TLS/SSL | tls | 2 | TLSおよびSSLプロトコルの実装 |
Trace Events | trace_events | 1 | トレースイベント操作 |
TTY | tty ※3 | 2 | tty操作 |
UDP/Datagram | dgram | 2 | UDPデータグラムソケットの実装 |
URL | url | 2 | URL解決および解析 |
Utilities | util | 2 | APIのユースティリティ |
V8 | v8 | 記載なし | V8固有のAPI |
VM | vm | 2 | V8仮想マシン |
Worker Threads | worker_threads | 2 | スレッド作成 |
Zlib | zlib | 2 | 圧縮機能 |
※1. グローバルスコープ内にあるため、requireを使用する必要はほとんどない | |||
※2. build/Release/addon.node という名前でアドオンが作成 |
|||
※3. ほとんどの場合、直接操作する必要はない |
#さいごに
調べてみると、使っていないAPIがたくさんあることに気づきました。
フレームワークもたくさんあるのでそこら辺も一回整理したいですね。
##参考