StatusCode.NOT_FOUND(404)の処理など、ゼロからコーディングするよりフレームワークを使用するのが普通と思いますが、Express.js以外にも、Node.jsには様々なものが存在します。
GitHub上でスターが多いフレームワークについて、特徴、インストール、Hello, worldを出すところまでをまとめてみました(Hello, worldはできるもののみ)。
GhostはフレームワークというよりCMSですが、自分でホスティングする場合はフリーです。一応調べたのもあって、最後に追記しました。
「Node.jsって何?」とか初歩的な使用法を知りたい方は以下の書籍が丁寧で分かりやすいです(解説されてるフレームワークはExpress.jsですが)。
- Jonathan Wexler著 吉川邦夫監訳 『入門 Node.js プログラミング』 翔泳社、2019
GitHubスター数
- Express (51,393)
- koa.js (30,482)
- Sails.js (21.769)
- fastify (16,842)
- hapi (12,954)
- Adonis (9,248)
- total.js (4,095)
- Ghost (35,867)
*2020/01/02時点
Express.js
特徴
- 言わずと知られたNode.jsのMVCフレームワーク
- GitHubのスターは群を抜いて多い(2021/1時点)
- 最もよく使用されており情報源も多くコミュニティも活発
- 日本語の情報源も多い(書籍もある)
インストール
yarn add express --save
Hello, world
constexpress=require('express')constapp=express()constport=3000app.get('/',(req,res)=>{res.send('Hello World!')})app.listen(port,()=>{console.log(`Example app listening at http://localhost:${port}`)})
リンク
Koa.js
特徴
- Express.jsの開発者らで設計・開発
- より小型(smaller)で表現力が高く(expressive)堅牢(robust)な基盤を志向
- Express.jsで実装されていないメソッド・ライブラリに重点1
インストール
yarn global add koa
Hello world
constKoa=require('koa');constapp=newKoa();// responseapp.use(ctx=>{ctx.body='Hello Koa';});app.listen(3000);
Fastify
特徴
- パフォーマンスに重点を置いており高速性に特徴
インストール
yarn add fastify --save
Hello, world (async/await)
// Require the framework and instantiate itconstfastify=require('fastify')({logger:true})// Declare a routefastify.get('/',async(request,reply)=>{return{hello:'world'}})// Run the server!conststart=async()=>{try{awaitfastify.listen(3000)fastify.log.info(`server listening on ${fastify.server.address().port}`)}catch(err){fastify.log.error(err)process.exit(1)}}start()
hapi
特徴
- 理念はシンプル、セキュア
- 自由な発想(out-of-the-box)による開発も売り
- 拡張にはmiddlewareではなくPluginを使用
- Express.jsと同様のアーキテクチャ、かつコーディング量の削減に重点1
インストール
yarn add hapi --save
Hello, world
constHapi=require('hapi');constinit=async()=>{constserver=Hapi.server({port:3000,host:'localhost'});server.route({method:'GET',path:'/',handler:(request,h)=>{return'Hello World!';}});awaitserver.start();console.log('Server running on %s',server.info.uri);};process.on('unhandledRejection',(err)=>{console.log(err);process.exit(1);});init();
リンク
Adonis
特徴
- Laravelライクなフレームワーク
インストール
$ yarn global add @adonisjs/cli
$ adnis new demo
$ cd demo
$ adonis serve --dev
リンク
Total.js
特徴
インストール
Express.jsやKoa.jsほど簡単ではないのでGitHubから空のプロジェクトをダウンロードする(Exampleが多数公開されている)
$ git clone https://github.com/totaljs/emptyproject.git
$ cd emptyproject
$ yarn
$ node index.js
リンク
Sails.js
特徴
- Express.jsが土台で、構造・ライブラリが豊富でありカスタマイズの省力化が可能1
- Ruby on Railsライク
- ORMをバンドルしており様々なDBとの連携が容易
インストール
$ yarn global add sails
$ sails new test-project
Web AppかEmptyを聞いてくる。今回は1を選択。
Choose a template for your new Sails app:
1. Web App · Extensible project with auth, login, & password recovery
2. Empty · An empty Sails app, yours to configure
(type"?"for help, or <CTRL+C> to cancel)
?
$ cd test-project
$ sails lift
こんな、おしゃれなメッセージが出てきます。
デフォルトポート番号が他と違うので、localhost:1337
にアクセスする。
リンク
ghost
特徴
- マネージドサービス(Pro)は有料
- セルフホスティングはフリー
- セルフホスティングのためのサポートもある(Valet)
- ググるとWordPressオルタナティブとして頻出
- テーマも提供されている
- フレームワークというよりはNode.jsベースのCMS
インストール
$ yarn global add ghost-cli
$ mkdir myapp
$ cd myapp
$ ghost install local
これでインストールされるので、http://localhost:2368/ghost
を開く
リンク
他の参考となるリンク
- Node Frameworkds
- 要チェックな10個の Node.js フレームワーク
- 10 Node.js Frameworks Worth Checking Out: Express, Loopback, Hapi, and Beyond(上記の翻訳元)
Jonathan Wexler著 吉川邦夫監訳 『入門 Node.js プログラミング』 翔泳社、2019(p.92) ↩