https://nodejsmodules.org/
javascriptのライブラリを一覧にしてまとめてみた
と合わせて見るといい感じ
express
http://expressjs.com/ja/
ウェブフレームワーク
シンプルかつ利用者が多い
pug
https://github.com/pugjs/pug
テンプレートエンジン
諸事情によりjadeから変更された。
タグで囲まずタブを1ブロックとして扱う記法。
ファイルを分割してextends でヘッダやフッタなどを共有したりできる。
extends headerLayout block content script(src="javascripts/test.js") div p.className#idName 文字列といった具合に記述する。
CoffeeScript
Ruby on Railsでよく使われるAltJS
https://www.npmjs.com/package/coffee-script
AltJS系は大体パッケージがある?
Sass
AltCSS
https://www.npmjs.com/package/node-sass
mongodb
https://www.npmjs.com/package/mongodb
mongodbと接続する。
メジャーなdbとは接続できるようパッケージが公開されている模様。
multer
フォーム画面からファイルのアップロード(multipart/form-data を解析する)
フォーム画面
form(method="post", enctype="multipart/form-data", action="/upload") input(type="file", name="thumbnail") input(type="submit")
uploade.js
let multer = require("multer") // upload先指定 let upload = multer({ dest: "./uploads/" }).single("thumbnail") // フォームからポスト router.post("/", /* @callback */ function (req, res, next) { // console.log(req.body) // console.log(req.files) upload(req, res, function (err) { if (err) { res.send("Failed to write " + req.file.destination + " with " + err) } else { res.download("./uploads/" + req.file.filename, "report.pdf") } }) })
request
GetやPostなどを使いやすくする。
Get例
router.post("/", /* @callback */ function (req, res, next) { const url = "getURL" // オプションを定義 const options = { url: url, method: "GET" } const request = require("request") // リクエスト送信 request(options, /* @callback */ function (error, response, body) { console.log(error) res.send(body) }) })
botkit
https://www.npmjs.com/package/botkit
slackやfacebookなどに対応したbotkitを作成できる。
node-uuid
ユニークなIDを取得する。
NoSQLのの主キーなどに使っている。
let uniqueID = uuid.v1()
body-parser
node.jsでポストされたフォームのデータを利用できるようにする。
大体導入するはず。
express-session
セッションにデータを保存。
express4.xより分離したので別個にインストールする必要あり。
なんだかんだ使う。
cookie-parser
クッキーを利用可能にする。
express-session を使うときなどにも必要になる。
mocha
テスティングフレームワーク
例外の自動捕捉やマルチスレッドのテストも可能。
コマンド一つでテストが行えるので自動化、エディタとの連携が容易。
以下データベースのテスト例
let m = require("mocha") let dbModel = require("../models/dbmodel") let assert = require("assert") m.describe("データベースのテスト", function () { m.describe("#テーブルのテスト", function () { m.it("データ追加時例外チェック(DB名が違う)", function (done) { dbModel.add({ test: "test" }, "dskgjndsaog").catch(function onRejected(error) { // console.log(error) assert(error !== null, error) done() }) }) m.it("データ取得時例外チェック(存在しないデータ)", function (done) { dbModel.get("gfsdjngero").catch(function onRejected(error) { // console.log(error) assert(error !== null, error) done() }) }) m.it("データ削除時例外チェック(存在しないデータ)", function (done) { dbModel.remove("gfsdjngero", "fdsgfgf").catch(function onRejected(error) { // console.log(error) assert(error !== null, error) done() }) }) let testData m.it("追加は正しくできているのか", function (done) { dbModel.add({ test: "test" }).then(function onFulfilled(data) { console.log(data) testData = data assert(data.ok, "データ登録ができていない") done() }) }) m.it("データ取得チェック", function (done) { dbModel.get(testData.id).then((data) => { assert.equal(data._id, testData.id, "データ取得ミス(idが違う)") assert.equal(data._rev, testData.rev, "データ取得ミス(revが違う)") assert.equal(data.test, "test", "データ取得ミス(データが違う)") done() }) }) }) })
helmet
セキュリティ周り
Expressなど軽量フレームワークは基本ノーガードなので注意
できれば早めに対応しておきたい
https://github.com/helmetjs/helmet
async
https://github.com/caolan/async
非同期処理
co
https://www.npmjs.com/package/co
非同期処理
ES6から標準でPromiseがサポートされるようになったのでそっちの方がいいかも
socket.io
https://socket.io/
WebSocketによる双方向リアルタイムアプリケーション。
WebだけでなくiOSやAndroidとも接続できるライブラリが提供されている。
optimist
https://www.npmjs.com/package/optimist
引数解析
ツールなどで使用する?
commander
https://github.com/tj/commander.js
-hや-vなどよく使う引数を簡単に設定できる。
ツール用
uglify-js
jsファイルの圧縮・最適化をおこなう。
underscore.js
関数型プログラムをサポート。
フロントでも使用可能。
深く考えずコレクションを操作する便利関数ライブラリとして捉えてもよし。
eslint
構文解析ツール
入れとくのが吉
VSCode などのエディタを利用すると自動で構文エラーをチェックしてくれる。
grunt
タスクランナー
簡易なタスクならnode.jsだけでも実行可能。
使わないという選択肢もある。
bower
フロントで動作するjavascript(jqueryなど)のパッケージ管理ツール
Browserify
node.jsとして書かれたものをブラウザ(フロント)で動作するようにする。
最後あたり混沌極まってる。