参考教材
Node.js基礎
Node.jsでコードを実行しよう
Node.jsでスクリプトを実行するにはターミナルを使う
console.log('hell Node.js!');
node (ファイルのパス(絶対パス))
絶対パス
pcのルートディレクトリから、そのファイルまでのパスを表す
相対パス
現在の'カレントディレクトリ'から、そのファイルまでのパスを表す
カレントディレクトリ
ターミナル上で現在開いているパス
# カレントディレクトリの確認方法
pwd
# 相対パスでNode.jsのファイルを開く
node 02_node_basic/010_run_script/start/Example.js
# 相対パスは./をつけるか何もつけないで記述
ターミナルの基本的な使い方
ターミナルの操作方法について整理
/**
* - 絶対パス
* ルートディレクトリからファイルまでのパス
* 例) / や c: などから始まる
*
* - 相対パス
* カレントディレクトリ、または実行中のファイルからのパス
* 例)
* ./ or /なし or ドライブ(c:)の指定なし -> 現在のディレクトリからの指定
* ../ -> 親のディレクトリを示す
*
* - カレントディレクトリ
* コマンドライン(ターミナル)上で現在開いているパス
* `pwd` で確認可能
*
* - CDコマンド(Change Directory)
* カレントディレクトリを変更するコマンド
* 例)
* cd フォルダ名 -> 指定したフォルダに移動(相対パス、絶対パスで指定可能)
* cd .. -> 親のフォルダに移動
*
* - LSコマンド(List)
* カレントディレクトリ内のファイルやフォルダの出力
*
*/
# 現在のファイルやフォルダを確認する方法
ls
# ファイルの詳細情報を出せる(もしくは'll')
ls -lts
ファイルに文字を書き込む
// ファイルへの書き込みをする際モジュールを一つimportする必要がある
// fs → Nodeモジュールで標準的に装備されているfsモジュール
// require → CommonJSのimportの方法
const fs = require('fs');
// ファイルの生成と書き込みを行う
// 第一引数に書き込む対象のファイル名を設定
// 第二引数に書き込みたい文字列を記述
fs.writeFileSync('./test.txt', 'hello, node.js')
'./text.txt' の nodeコマンドを実行したディレクトリからの相対パスになる。
Node.jsのスクリプト内のパス( ./text.txt )は、nodeコマンドを実行したディレクトリからのパスになる
__dirname
console.log(__dirname);
現在実行されたJSファイルが格納されているフォルダまでのパスを__dirnameによって取得できる
__filename
console.log(__filename);
実行中のファイル(example.js)までの絶対パスが格納されている変数
./text.txtをstartフォルダの中に作成したい場合
fs.writeFileSync(__dirname + '/test.txt', 'hello, node.js')
パスの取り扱い方法について学ぶ
path
パスの操作を行うためのメソッドが格納されている
const path = require('path');
// test.txtをdistフォルダに移す
// 相対パスを引数に含めた場合、第一引数のパスから一つ上がる解釈を自動でしてくれる
const distPath = path.resolve(__dirname, '../dist/test.txt');
console.log(distPath);
fs.writeFileSync(distPath, 'hello, node.js')
パスの指定は.resolveを使った方が安全
resolveは実行された環境に合わせてpathを出力してくれる
モジュール管理システム
ソースコードを機能毎に分割した一つの単位
→ 代表的なものにESMとCJSが存在する
各環境毎のモジュール管理システム
ブラウザ
・ES Module (ESM)
Node.js
・CommonJS (CJS)
・ES Module (ESM)
CommonJSの特徴
・Node.js独自の仕組み
・ブラウザでは使えない
ES Moduleの特徴
・ECMAScriptの標準
・ブラウザで使用可能
・基本的にはESMの記述を推奨
ブラウザとNode.jsの実行環境の違い
# ブラウザとNode.jsの実行環境の違い
- モジュール管理の仕組みが異なる
ブラウザ:ESM
Node.js:CJS、ESM
- 使える機能が異なる
ブラウザ:document(DOM API)、alertなど
Node.js:require、fsモジュール、pathモジュールなど
- グローバルオブジェクトが異なる
ブラウザ:window
Node.js:global
globalThis:適宜グローバルオブジェクトを返却するキーワード
クロスプラットフォームで動くコードは `Universal(Isomorphic) JavaScript` と呼ばれる
例)React の CSR / SSR など




