Hello Kraken.js!

 

前言

kraken.js 由paypal 公司開源的一個用於快速開發基於Express.js框架應用的快速開發工具, 由於kraken 並無在Express.js基礎上更改多少東西,只是在原來的express基礎上補充了一些約定開發的規則, 讓開發根據便捷.web

你好,世界!

要建立一個kraken 項目只須要很是簡單的三步走:express

  1. 安裝必備工具npm

    Linux or Mac
    sudo npm install -g generator-kraken
    Windows
    npm install -g generator-krakenjson

  2. 建立kraken項目
    只須要一行代碼,而後,看着提示語,輸入一些東西,一個項目就這樣建立完畢.安全

    yo krakensession

  3. 運行kraken項目
    仍是隻須要一行代碼app

    npm start框架

以上三行代碼便可,完成一個kraken項目的建立了.grunt

注意事項:

  1. yo kraken 你輸入項目名字的時候,會在當前項目建立與該項目名字同樣的文件夾,記得cd 進去文件夾再去運行 npm start工具

  2. 注意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應用的方式.

配置(/config)

kraken./config 約定了兩類配置文件:

  1. app.json 用於配置,host, port, i18n ,express 等.
  2. middleware 用於對默認中間件的配置,目前支持的中間件有appsec, compiler, session, errorPages, static, 詳細的參數配置請閱讀官方文檔,這裏就不贅述了.

除此之外,kraken 還約定支持根據NODE_ENV自動匹配相應的配置文件,規則是:

app-NODE_ENV.json

例如, 當前NODE_ENVdevelopment, 你在目錄下有一個app-development.json的文件話,就會優先讀取該文件的配置.

控制器(/controllers)

路由控制

kraken 默認會自動加載./controllers 下的文件,進行路由控制,我的以爲,這個真心省心.接下來的寫法,與express 徹底同樣!

module.exports = function (server) {
    server.get('/customer', function (req, res) {
       res.send('Hello World');
    });
};

若是,你是express的開發者,就會越感發現,kraken更多的是補充了express不足的地方,除此之外跟日常用express開發毫無區別.

自定義中間件 和 週期控制

kraken 將一個請求的週期定義爲三級:

  1. app.requestStar 請求開始
  2. app.requestBeforeRoute 進行路由前
  3. 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項目.

相關文章
相關標籤/搜索