- 雑にメモります、随時更新中
- ノウハウや参考記事があれば是非ご紹介ください
app.configure がなくなった
元々存在理由が不明だったやつ。
普通に if (app.get('env') === 'development')
的な条件分岐にする。
express.logger がなくなった
普通は morgan で代替する。
express.bodyParser が変わった
3 系でも非推奨だったので、この記事に含めるには微妙だけどついでに書いておく。
// extended: true だと 3 系と同じように
// name="foo[x]" value="val" を { foo:{x: "val"} } へ自動で展開する。
// README によると false 推奨っぽいのだが、何故そうなったのかは不明。
app.use(express.bodyParser.urlencoded({extended: true}));
multipart 用のミドルウェアについては、README にあるけど以下のどれかに変更してくれとのこと。
This does not handle multipart bodies, due to their complex and typically large nature. For multipart bodies, you may be interested in the following modules:
busboy and connect-busboy
multiparty and connect-multiparty
formidable
multer
所感:
- miltiparty = 個別のミドルウェアが欲しいなら
- multer =
app.use
で一括指定したいなら - formidable = フォーム処理的なものも付属している?
- busboy = 用途が良くわからない、multer が中で使ってる
なお、旧 app.use(express.bodyParser())
も非推奨ログが出るけど動くは動く。
express.csrf がなくなった
替わりに csurf を使う。使い方は全く同じ。
/bin や /public の雛形が出来た
express-generator
で生成すると bin
や public
ディレクトリができている。
今までオレオレ設定が気になっていた人は、このルールに合わせると少し幸せになれます。
$ express express-project
$ tree express-project
express-project
├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.jade
├── index.jade
└── layout.jade
Router が出来た
未調査だが、ざっと見た感じ
app = express.Router()
で、グローバルに設定した app を返すようになり、各ファイルで
var app = express.Router();
app.get('/', function(req, req, next){});
できるようになっている。
また、子ルーターが設定できるよう? 非常に良い!
var router = express.Router();
router.get('/foo', function(req, req, next){});
router.get('/bar', function(req, req, next){});
// 未検証だけど、これで /calendar/foo と /calendar/bar が設定されるのではないか
app.use('/calendar', router);
app を階層構造で定義できるようになった
Router だけではなく、app そのものも階層構造を持てるようになりました。
var app = express();
app.get('/', ..略..);
var userApp = express();
userApp.get('/create', ..略..);
// '/' と '/user/create' にルーティングされる
app.use('/user', userApp);
// この mountpath のように、
// 階層構造を前提とした各種プロパティも用意されている
console.log(userApp.mountpath); // -> '/user'
参考リンク
- Express 4.x API http://expressjs.com/api.html