56
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NodeJSで入れておきたいパッケージまとめ

Last updated at Posted at 2015-03-07

実運用でNodeJSをやるなら
入れておきたいnpmパッケージ


○開発モード
コード修正時に即再起動
・nodemon

○デバッガ
実行時ブレークポイント、変数ウォッチ機能
・node-inspector
対象サーバのリモートデバッグをするには次のように行う
サーバ側でnode-inspector起動
$node --debug app.js
$node-inspector
クライアント側からはsshポートフォワードを行う
$ssh -N -L 8080:127.0.0.1:8080 (User Name)@(server IP)
クライアント側のブラウザで下記にアクセス
http://127.0.0.1:8080/debug?port=5858

○リモートエディタ
・brackets
Bracketsサーバを立ち上げ
$ brackets --proj-dir (nodeJSサーバのディレクトリ) --supp-dir (Bracketsの設定ファイルを置く任意ディレクトリ)
(server IP):6800にアクセスすると
ブラウザでBracketsエディタを起動し直接サーバファイル(コード)を編集できる

○ブラウザテスト駆動開発
・browser-sync

○非同期処理
nodejsで起こりがちなコールバック地獄を避ける。綺麗なコードがかける
エラー処理も見やすくなる
・async
・Q
Node12以降ではライブラリを使わなくてもES6のPromiseが使えるのであえて入れる必要はないかもしれない

○クリティカルセクション
同時アクセスされたら困るような箇所(同じファイル書き込みなど)をロックする
・semaphore
RDBMSのトランザクションは
sequelizeを使ったほうが良い

○永続化
マルチプロセス起動もできる
・pm2

○フレームワーク
ルーティング管理、静的リソースの管理など
・express

○ログ
アクセスログ
expressの場合、下記設定
app.use(express.logger('dev'));
実行行ログ出力
・lwl

○セッション管理
・cookie-parser
・express-session


app.use(express.cookieParser()); // cookie
app.use(express.session({
    secret: 'secret cat',
    cookie: { httpOnly: true,secure: true,maxAge:3600000 }, // add httpOnly and secure attr to be more safety
    resave: false,
    saveUninitialized: true,
    rolling: true
}));

複数NodeJSサーバの場合、軽量KVSに保存するのが一般的
下記はRedisで管理する場合
・connect-redis

○クッキー
expressの場合、下記設定を有効にする
app.use(express.cookieParser());
セキュリティのために下記もすべし
-secure属性をつける
-httponly属性をつける

○HTMLテンプレートエンジン
nodejsのパラメータを渡して動的ページ生成
・ect
pug(旧jade)、ejsなどもあるがectが最速

○CSSテンプレートエンジン
cssパターンを関数化できる。
プレフィックス付なども1つの関数にまとめられる
・less

○タスク処理/ファイル変更監視
・gulp

○ページ高速化
JS,LESSをミニファイ
・gulp-uglify
・gulp-less
・gulp-autoprefixer
gzip圧縮
expressの場合は下記設定でレスポンスがgzipになる
app.use(express.compress());

○クライアントサイドライブラリ管理
・bower
・browserify
○レスポンシブデザイン
・bootstrap

○品質管理
・grunt-plato

○テスト
単体テスト
・jasmine
REST APIテスト
・frisby

○セキュリティ
盗聴対策、ログインページやフォーム入力ページがある構成ならHTTPS必須
・https

CSRF対策
・csurf
簡易にCSRF対策する場合はリファラーチェック
req.headers['referer']

XSS対策
データ検証(validate)と、無害化(sanitize)
・validator
クライアントサイドでsanitizeしないと確実でない


下記はDBや認証使う場合

○MySQL
・node-mysql
MySQLのORM
・sequelize
下記npmでさらにマイグレーション(古いDB定義を新しいDB定義に変換する)もできる
・sequelize-cli

○Redis
・node-redis

○OAuth認証
・passport

○LDAP
・ldapjs


おまけ

○サーバサイドレンダリング
・node-canvas
canvas描画をcairoエンジンによりサーバ側で行う
・reactjs
下記サンプル参照
https://github.com/mhart/react-server-example

DOM描画に関するブラウザ依存がなくなるかも
XSS対策がサーバ側でできる
(実用に耐えられるかは要検証)

56
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?