記事

Expressについて

  • 言わずとしれたNodejsのフレームワーク
  • APIがこんな感じで爆速で作れる
/* 1. expressモジュールをロードし、インスタンス化してappに代入。*/
var express = require("express");
var app = express();

/* 2. listen()メソッドを実行して3000番ポートで待ち受け。*/
var server = app.listen(3000, function(){
    console.log("Node.js is listening to PORT:" + server.address().port);
});

/* 3. 以後、アプリケーション固有の処理 */

// 写真のサンプルデータ
var photoList = [
    {
        id: "001",
        name: "photo001.jpg",
        type: "jpg",
        dataUrl: "http://localhost:3000/data/photo001.jpg"
    },{
        id: "002",
        name: "photo002.jpg",
        type: "jpg",
        dataUrl: "http://localhost:3000/data/photo002.jpg"
    }
]

// 写真リストを取得するAPI
app.get("/api/photo/list", function(req, res, next){
    res.json(photoList);
});
  • Expressは「ルーティング」と「処理」を繋げていくことで構成される

    • GET "/" を受けたら処理Aを実行。
    • POST "/" を受けたら処理Bを実行。
    • GET "/api/photo/list" を受けたら処理Cを実行。
    • どんなリクエストでも受けたら処理Dを実行。
  • 上記の処理A,B,C,Dが全てミドルウェアにあたる
  • ユーザーは自分でミドルウェアを作成してどのリクエストに適用するかをルーティングを使って決めることができる。

    • または3rd Partyのミドルウェアを適用することもできる。

Express generatorというものがあるらしいぞ

  • WEBアプリケーションのひな形を生成できる。

    • デフォルトのテンプレートエンジンはpugらしい。

Pugってなんやて

  • HTMLを効率よくコーディングできるテンプレートエンジンらしい
  • 元Jade

htmlだとこんなのが

<html>
	<body>
		<h1>message</h1>
	</body>
</html>

pugだとこんな感じで書ける

html
  body
    h1= message

参考記事

Expressで図書館用のアプリケーションを作るチュートリアル

routingは、まずapp.js配下のこいつらでURIからの振り分けを決める

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

・・・

app.use('/', indexRouter);
app.use('/users', usersRouter);

振り分けられた先の、ミドルウェアのところで更に振り分けを決める(例はusers.js)

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/cool/', function(req, res, next) {
  res.send("You're so cool");
});

module.exports = router;

参考記事

NPMについて

そういやnpmコマンドのオプションって何も気にせず、ドキュメントのコピペで書いてたな

皆さんおなじみnpm install

> npm install
> npm i

package.json と package-lock.json を更新せずにnode_module を完全復帰させたい場合は、Clean Install

> npm ci

たまにあるnpm install —saveは、以前まではsaveオプションを付けなければdependencies欄に記入されなかったが、現在のnpmではこのオプションがなくてもdependencies欄に記入されるようになったらしいので、不要だそう

> npm install --save パッケージ名
> npm install -save パッケージ名
> npm install -S パッケージ名

開発にしか使わない(リリース資材に混ぜたくない)パッケージはこちら

> npm install --save-dev パッケージ名
> npm install -D パッケージ名

参考記事