摘要: Node三駕馬車。javascript
Fundebug經受權轉載,版權歸原做者全部。html
Node.js是10年前首次推出的,目前它已經成爲世界上最大的開源項目,在GitHub上有+59,000顆星,下載次數超過10億。流行度快速增加的部分緣由是Node.js容許開發人員在應用程序的客戶端和服務器端部分使用相同的語言:JavaScript。Node.js是一個開源和跨平臺的JavaScript運行時環境,專爲構建可擴展的服務器端WEB應用而設計,自身具備高併發、擴展性強等特色。因爲社區其呈指數級增加和普及,所以建立了許多框架來提升生產力。在本文中,咱們將探討Node.js中三個最流行的框架之間的差別:Express,Koa和Hapi。在之後的文章中,咱們將研究Next,Nuxt和Nest。前端
比較基於:java
Express是一個最小且靈活的Web應用程序框架,爲Web和移動應用程序提供了一組強大的功能,它的行爲就像一箇中間件,能夠幫助管理服務器和路由node
starweb
安裝express
確保你已經安裝node和npmnpm
// 你能夠將express安裝到項目依賴
npm install express --save
// 若是要臨時安裝Express而不是將其添加到依賴項列表,則可使用
npm install express --no-save
複製代碼
Hello World小程序
這是關於如何建立一個偵聽端口3000並響應「Hello World!」的快速應用程序的最基本示例segmentfault
// 這裏只建立根目錄 其餘目錄返回404
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
複製代碼
好處
缺點
儘管Express.js是一個很是方便且易於使用的框架,但它有一些可能影響開發過程的小缺點。
性能
Express是對web應用的一層基本封裝,繼承了Node.js的特性
當天也有一些express性能的最佳實踐包括:
一個簡單的「Hello World」應用程序每秒具備如下性能請求:
安全
Node.js漏洞直接影響Express,所以確保使用最新的穩定版Node.js
社區參與
最後,express多是Node.js最流行的框架,還有許多其餘流行的框架都是基於Express構建的。
Koa 是一個新的 web 框架,由 Express幕後的原班人馬打造,致力於成爲web應用和API開發領域中的一個更小、更富有表現力、更健壯的基石。 經過利用 async 函數,Koa幫你丟棄回調函數,並有力地加強錯誤處理Koa並無捆綁任何中間件而是提供了一套優雅的方法,幫助您快速而愉快地編寫服務端應用程序
star
安裝
Koa須要nodev7.6.0以上版本支持,由於內部使用了ES6的特性
npm i koa
node my-koa-app.js
複製代碼
Hello World
建立一個web服務,監聽3000端口返回‘Hello World’
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
複製代碼
好處
缺點
性能
Koa自己是一個很是輕量級的框架,能夠構建具備出色性能的Web應用程序。代碼可讀性和維護性都相對較高
固然一些性能的最佳實踐也是必不可少的,例如:
一個簡單的「Hello World」應用程序每秒具備如下性能請求:
安全
Koa有大量的中間件,提供相應的功能 貼圖一張
社區
最後,Koa專一於核心中間件功能,設計顯式地利用了async/ waiting使異步代碼可讀性更高
Hapi是基礎功能相對豐富的框架。開發人員更專一於業務,而不是花時間構建基礎架構。配置驅動的模式,區別於傳統的web服務器操做。他還有比一個獨特功能,可以在特定的IP上建立服務器,具備相似的功能onPreHandler。再須要的時候你能夠攔截特意的請求作一些必要的操做
star _ GitHub Stars: +11000
安裝
確保你已經安裝node
npm install hapi
複製代碼
Hello World
如下示例是使用hapi的最基本的hello world應用程序:
'use strict';
const Hapi=require('hapi');
// 建立一個服務監聽8000端口
const server=Hapi.server({
host:'localhost',
port:8000
});
// 添加路由
server.route({
method:'GET',
path:'/hello',
handler:function(request,h) {
return'hello world';
}
});
// 啓動服務
const start = async function() {
try {
await server.start();
}
catch (err) {
console.log(err);
process.exit(1);
}
console.log('Server running at:', server.info.uri);
};
start();
複製代碼
好處
缺點
性能
017年對Node框架的研究代表hapi相對於其餘框架的表現最差
一個簡單的「Hello World」應用程序每秒具備如下性能請求:
安全
hapi安全性主要依賴於插件 插件選擇
社區
最後Express仍然是當下最爲流行,koa因擁抱ES6正在崛起,hapi仍是大型項目的第一選擇
不論是Express,Koa仍是Hapi目前都是很是成熟的框架。幾乎都能知足你的需求,沒有最好,只有最合適
Choosing the right Node.js Framework: Express, Koa, or Hapi?
Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java線上應用實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了10億+錯誤事件,付費客戶有Google、360、金山軟件、百姓網等衆多品牌企業。歡迎你們免費試用!