以前接觸過Node.js是由於好奇大前端愈來愈能幹了,連我後臺的飯碗都要搶了,太囂張了,因而我想打壓打壓它,而後就這樣接觸它了。
再到後來是由於Settings-Sync插件二次開發,我須要用node.js造一個mock server,而當時在開源項目上找到一個模擬github rest api的node.js服務端程序,而後我就在此基礎上開發。從工做中學習有應用場景有目的性,果真仍是學的要快不少。javascript
今天之因此要說一說node.js的十大Web框架,主要是以爲之後針對VsCode開發或者是我本身的項目,用Node.js可能會比較多,好比我將個人博客系統一步一步完善,我想嘗試微服務的不少種實踐方式,其實不少企業用微服務,還有一個緣由就是不受編程語言的制約。html
大前提:框架無優劣之分,只有在某個應用場景是否更適合和更好。前端
Sail.js官網地址爲:https://sailsjs.com/
github地址:https://github.com/balderdashy/sailsjava
Sails能夠輕鬆構建自定義的企業級Node.js應用程序node
在幾周內而不是幾個月內構建實用的,生產就緒的Node.js應用程序。Sails是Node.js最流行的MVC框架,旨在模擬Ruby on Rails等框架的熟悉MVC模式,但支持現代應用程序的需求:具備可擴展性,面向服務的體系結構的數據驅動API。git
優勢以下:
(1)100%JavaScript
在Sails自上構建意味着你的應用程序徹底使用JavaScript編寫,從這裏能夠看出瀏覽器兼容性良好;
(2)任何數據庫
Sails捆綁了一個功能強大的ORM,即Waterline,它提供了一個簡單的數據訪問層,不管你使用什麼數據庫,它都能正常工做;
(3)自動生成的Rest API
Sails附帶的藍圖有助於在不編寫任何代碼的狀況下快速啓動應用程序的後端;
(4)前端不可知
Sails與任何前端兼容:Angular、React、IOS、Android、Windows Phone,自定義硬件或其餘徹底兼容;
(5)輕鬆WebSocket集成
因爲Sails會爲您轉換傳入的套接字消息,所以它們會自動與Sails應用中的每一個路由兼容;
(6)專業支持
Sails提供商業支持,以加速開發並確保代碼職工的最佳實踐;github
官網地址爲:https://hapijs.com/web
如何建立一個Hapi.js?請參考以下步驟(均來自官網示例):
1.初始化數據庫
npm init
2.安裝庫express
npm install hapi --save
3.編寫js
'use strict'; const Hapi=require('hapi'); // Create a server with a host and port const server=Hapi.server({ host:'localhost', port:8000 }); // Add the route server.route({ method:'GET', path:'/hello', handler:function(request,h) { return'hello world'; } }); // Start the server 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();
4.運行
npm start
關於這個能夠參考個人這篇博客:https://developers-youcong.github.io/2019/02/22/node-js%E4%B9%8Bexpress%E6%A1%86%E6%9E%B6/
Kraken 基於 express 構建,實現對環境變量的感知、動態配置、高級中間件和應用生命週期的事件通知。
官網地址爲:http://krakenjs.com/
示例例子:
'use strict'; var express = require('express'), kraken = require('kraken-js'); var app = express(); app.use(kraken()); app.listen(8000);
Meteor是一組新的技術用於構建高質量的Web應用,提供不少現成的包,可直接在瀏覽器或者雲平臺運行。
官網地址爲:https://www.meteor.com/
優勢以下:
(1)使用更少的代碼運送更多
因爲集成的JS堆棧從數據庫擴展到最終用戶的屏幕,所以能夠在10行中完成1000行.
(2)爲任何設備構建應用程序
不管是針對Web、IOS、Android仍是桌面進行開發,都使用相同的代碼。熱門推送新功能,無需應用商店批准或者強制用戶下載新的原生應用.
(3)集成已有的技術
使用流行的框架和工具,開箱即用。專一於構建功能,而不是本身將不一樣的組件鏈接在一塊兒。
官網地址爲:http://meanjs.org/
1.什麼是Mean.js
MEAN.JS是一個全棧JavaScript的解決方案,可幫助您使用MongoDB、Express、Angular和Node.js構建快速,健壯且可維護的生產Web應用程序.
2.爲什麼選擇Mean.js
Mean.js將幫助你入門並避免無用的笨拙工做和常見陷阱,同時保持你的應用程序井井有理。咱們目標是建立和維護一個簡單易讀的開源解決方案,你可使用它並信任它。
3.入門
入門請參考官方文檔:http://meanjs.org/docs.html
Koa是下一代的Node.js的Web框架。由Express團隊設計。旨在提供一個更小型、更富有表現力、更可靠的Web應用和API的開發基礎。
Koa能夠經過生成器擺脫回調,極大地改進錯誤處理。Koa核心不綁定任何中間件,但提供了優雅的一組能夠快速愉悅地編寫服務器應用的方法。
關於koa可參考:https://www.npmjs.com/package/koa
KeystoneJS,以 Express 和 MongoDB 爲基礎搭建的 Node.js CMS 和 Web 應用程序平臺。
官網地址爲:https://keystonejs.com/
具備如下特性:
Express.js 和 MongoDB:Keystone 會爲你配置 express(node.js 上的 Web 服務器),用 Mongoose(領先的 ODM 包)鏈接你的 MongoDB 數據庫
動態路由:Keystone 從設置 MV* 程序的最佳實踐入手,讓你管理模板、視圖和路由變得更容易
數據庫域:ID、String、Boolean、Date 和 Number 是數據庫的構件。Keystone 以它們爲基礎實現了在現實工做中更實用的域類型,好比 name、email、password、address、image 和 relationship (及其它)
自動生成管理員界面:無論你在搭建應用程序,或者在生產環境中做爲數據庫內容管理系統時是否用它,Keystone 的管理員界面都能節省你的時間,讓你管理數據更容易
編碼更簡單:有時即使作的事情簡單,異步代碼也會變得複雜。Keystone讓簡單的事情(好比在視圖中顯示以前加載數據)保持簡單
表單處理:要驗證表單、上次圖片或用一行代碼更新數據庫?基於你已經定義的數據模型,Keystone 能夠作到
會話管理:Keystone 自帶了會話管理和認證功能,包括密碼域的自動加密
發送 Email:藉助 Keystone,你的應用程序能夠輕鬆地設置、預覽和發送基於模板的 email。它還集成了 Mandrill (Mailchimp 卓越的事務性 email 發送服務)
flatiron 是一款 Node.js 和瀏覽器的框架組件,是一款構建現代化 web 應用適應性很強的框架。flatiron 提供比 Rails 類組件有更豐富配置的框架組件,容許開發者本身添加他們想要的功能組件。
可參考地址爲:https://www.npmjs.com/package/flatiron
LoopBack 是基於 Node.js 的一個開源的 API 框架,可讓 Node.js 應用方便的跟各類設備經過 API 進行互聯。
可參考地址爲:https://loopback.io/
本文主要參考除引入的官網外還參考Node.js十大Web框架