node.jsのNPMパッケージを一覧にしてまとめた

以下を参考に(セキュリティ警告が出る)
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として書かれたものをブラウザ(フロント)で動作するようにする。



最後あたり混沌極まってる。



2017年3月26日日曜日