Node.js是10年前首次推出的,目前它已經成爲世界上最大的開源項目,在GitHub上有+59,000顆星,下載次數超過10億。流行度快速增加的部分緣由是Node.js容許開發人員在應用程序的客戶端和服務器端部分使用相同的語言:JavaScript。Node.js是一個開源和跨平臺的JavaScript運行時環境,專爲構建可擴展的服務器端WEB應用而設計,自身具備高併發、擴展性強等特色。因爲社區其呈指數級增加和普及,所以建立了許多框架來提升生產力。在本文中,咱們將探討Node.js中三個最流行的框架之間的差別:Express,Koa和Hapi。在之後的文章中,咱們將研究Next,Nuxt和Nest。
比較基於:html
Express是一個最小且靈活的Web應用程序框架,爲Web和移動應用程序提供了一組強大的功能,它的行爲就像一箇中間件,能夠幫助管理服務器和路由
star前端
安裝node
確保你已經安裝node和npm
// 你能夠將express安裝到項目依賴 npm install express --save // 若是要臨時安裝Express而不是將其添加到依賴項列表,則可使用 npm install express --no-save
Hello Worldweb
這是關於如何建立一個偵聽端口3000並響應「Hello World!」的快速應用程序的最基本示例
// 這裏只建立根目錄 其餘目錄返回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
缺點npm
儘管Express.js是一個很是方便且易於使用的框架,但它有一些可能影響開發過程的小缺點。
性能api
Express是對web應用的一層基本封裝,繼承了Node.js的特性
當天也有一些express性能的最佳實踐包括:promise
一個簡單的「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();
好處
缺點
性能
2017年對Node框架的研究代表hapi相對於其餘框架的表現最差
一個簡單的「Hello World」應用程序每秒具備如下性能請求:
安全
hapi安全性主要依賴於插件
插件選擇
社區
最後Express仍然是當下最爲流行,koa因擁抱ES6正在崛起,hapi仍是大型項目的第一選擇
不論是Express,Koa仍是Hapi目前都是很是成熟的框架。幾乎都能知足你的需求,沒有最好,只有最合適
哥倫比亞美女開發 Liz
Twitter: @lizparody23
Liz is a self-taught Software Engineer focused on JavaScript, and Developer Relations Manager at NodeSource. She organizes different community events such as JSConf Colombia, Pioneras Developers, Startup Weekend and has been a speaker at EmpireJS, MedellinJS, PionerasDev, and GDG.
She loves sharing knowledge, promoting JavaScript and Node.js ecosystem and participating in key tech events and conferences to enhance her knowledge and network