PORT=8000 npm startはLinuxでの書式。
Windowsではset PORT=8000 & npm start とする。このsetコマンドとは、実行中の環境(プロンプト)でのみ有効な環境変数を設定するコマンド。「&(アンパサンド)」はコマンドの区切り文字。複数のコマンドを連続で実行できる。
ExpressはデフォルトではX-powered-by ヘッダにExpressを書き込む。
つまり閲覧者にExpressを使用していることを知られてしまう。
helmetモジュールによってこれを送信しないように設定できる。
他にもいくつかセキュリティに有用なHTTPヘッダがあり、helmetによって有効化される。
Node.jsのセキュリティ・チェックリスト | プログラミング | POSTD
なお、X-powered-byを隠したいだけならhelmetを使用せずapp.disable('x-powered-by');でも良い。
router.get('/', function(req, res, next) {});のnextはnext()のように使う。次に一致する、このルートの次に対象範囲が広いルートに処理を渡す。
Express - node Webフレームワーク | 日本語ドキュメンテーション
Applicationクラスのuseメソッドは、新しくrouterオブジェクトやミドルウェアを登録したり、設定をしたりするもの。設定にはテンプレートのパスやテンプレートエンジン、ログなどがある。
app.get('env')で、開発環境かリリース環境か取得できる。
Node.jsでは、エンコードなどCPUに負荷がかかる処理はイベントループを妨げるためしてはいけない。Scalaやjavaなどマルチスレッドの処理系に委譲すべき。
log(2);やlog(4);をconsole.log('2');に置換したい時、検索 log\((\d)\) 置換 console.log('$1')とする。数字の部分を置換後に使うため、カッコでくくった。置換後は$1,$2のように何番目か指定して使用する。
mochaでのテスト
- mochaはtest/test.jsを参照する。mochaのコマンドは長いので、npm testだけでmochaが実行されるようにpackage.jsonのscriptsを編集
- test/test.jsにテスト用のコードを書く
webpack
- webpackとは、JSのモジュールを一つのファイルにまとめるもの。通信量削減や名前空間の隠蔽などメリットがある。
- entry.jsはルートとなる。javaで言うとMain.java。ここから参照を始める。
- JSを変更したらwebpackでビルドという手順。Nodeが起動している間に変更されたら自動でビルドするという設定もある。
- uglify(JSの圧縮)も設定で可能。
JQueryを使用したjsを最初に読み込んでしまうと、HTMLが読み込まれていないためにconst para = $('#id')が取得できない場合がある。最後に書くか、遅延読み込みか、何らかの策を講ずる必要がある。
X-Requested-withによってajaxのリクエストか判定できる。