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项目.

相关文章
相关标签/搜索