kraken.js 由paypal 公司開源的一個用於快速開發基於Express.js框架應用的快速開發工具, 由於kraken 並無在Express.js基礎上更改多少東西,只是在原來的express基礎上補充了一些約定開發的規則, 讓開發根據便捷.web
要建立一個kraken 項目只須要很是簡單的三步走:express
安裝必備工具npm
Linux or Mac
sudo npm install -g generator-kraken
Windowsnpm install -g generator-kraken
json
建立kraken項目
只須要一行代碼,而後,看着提示語,輸入一些東西,一個項目就這樣建立完畢.安全
yo kraken
session
運行kraken項目
仍是隻須要一行代碼app
npm start
框架
以上三行代碼便可,完成一個kraken項目的建立了.grunt
yo kraken
你輸入項目名字的時候,會在當前項目建立與該項目名字同樣的文件夾,記得cd
進去文件夾再去運行 npm start
工具
注意NODE_ENV
的設置,kraken的配置是會根據當前NODE_ENV
進行變化,因此若是跑不通的時候最好檢查一下當前的NODE_ENV
.默認狀況下,NODE_ENV
沒有設置或者設置了development
,啓動的時候,kraken
會默認加載./public/templates
下的模板,設置了其餘值的時候,就會去加載./.build/templates
而這個當你在kraken
項目目錄下運行grunt build
就會出現.build
該目錄了用於部署在NODE_ENV
設置爲production
或者其餘值的時候加載.
查看你當前系統的NODE_ENV
環境
Linux or Mac
echo $NODE_ENV
Windows
echo %NODE_ENV%
我的見解 kraken
與其說是一個框架好不如說它只不過提供了靈活,方便的用於構建Express應用的方式.
kraken
在 ./config
約定了兩類配置文件:
app.json
用於配置,host, port, i18n ,express 等. middleware
用於對默認中間件的配置,目前支持的中間件有appsec
, compiler
, session
, errorPages
, static
, 詳細的參數配置請閱讀官方文檔,這裏就不贅述了. 除此之外,kraken
還約定支持根據NODE_ENV
自動匹配相應的配置文件,規則是:
app-NODE_ENV.json
例如, 當前NODE_ENV
是development
, 你在目錄下有一個app-development.json
的文件話,就會優先讀取該文件的配置.
kraken
默認會自動加載./controllers
下的文件,進行路由控制,我的以爲,這個真心省心.接下來的寫法,與express 徹底同樣!
module.exports = function (server) { server.get('/customer', function (req, res) { res.send('Hello World'); }); };
若是,你是express的開發者,就會越感發現,kraken
更多的是補充了express不足的地方,除此之外跟日常用express開發毫無區別.
kraken
將一個請求的週期定義爲三級:
app.requestStar
請求開始 app.requestBeforeRoute
進行路由前 app.requestAfterRoute
路由後輸出 整個實現異常簡潔, 有興趣的能夠去閱讀源碼:
appcore.js
line: 172 - 198
定義一箇中間件的方法與express的時候同樣,只不過,如今多了一步,咱們要把中間件放到哪一個位置而已
約定在./middleware/lib
下建一個文件,beforeRouteMiddleware.js
module.exports = function () {_ var reqCounts = 0; return function (req, res, next) { req.counts = reqCounts | 0; reqCounts++; next(); }; };
而後在: index.js
var beforeRouteMiddleware = require('./lib/middleware/beforeRouteMiddleware') app.requestBeforeRoute = function requestBeforeRoute(server) { server.use(beforeRouteMiddleware()); };
與express的中間件功能同樣,每請求一次,都會觸發中間件. 與原生的express不一樣krarken
提供了更有條例的中間件定義約定.
kraken
還有一些比較實用的功能,例如安全,還有本地化,不過這些內容,官方文檔已經寫得很詳細了,這裏就不做過多的說明. 在我看來,kraken
只幹了一件事,就是把express條理化了,kraken
並無對express進行更多的封裝,因此,只要會express的入手kraken
就像喝水同樣簡單. 而kraken
提供的約定,可以更有效率的開發Node.js的web項目.