Hello Kraken.js!

前言

kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的express基础上补充了一些约定开发的规则, 让开发根据便捷.

你好,世界!

要创建一个kraken 项目只需要非常简单的三步走:

  1. 安装必备工具

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

  2. 创建kraken项目 
    只需要一行代码,然后,看着提示语,输入一些东西,一个项目就这样创建完毕.

    yo kraken

  3. 运行kraken项目 
    还是只需要一行代码

    npm start

以上三行代码即可,完成一个kraken项目的创建了.

注意事项:

  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_ENV是development, 你在目录下有一个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项目.

分类: 前端应用

Kraken.js!的更多相关文章

  1. Hello Kraken.js!

      前言 kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的 ...

  2. Node.js 在 PayPal实战

    之前有过一个谈了很多关于PayPal移动到node.js的一个应用平台.作为设置我的免费用户界面的第1部分的延续,我很高兴地说,这些传言是真的,我们的Web应用程序正在从Java迁移到JavaScri ...

  3. PayPal为什么从Java迁移到Node.js

    前言 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一 ...

  4. node.js之十大Web框架

    之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node. ...

  5. [转载]PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%

    http://ourjs.com/detail/52a914f0127c763203000008 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 ...

  6. PayPal为什么从Java迁移到Node.js 性能提高一倍 文件代码减少44%

    大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2 ...

  7. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  8. 带你入门带你飞Ⅱ 使用Mocha + Chai + SuperTest测试Restful API in node.js

    目录 1. 简介 2. 准备开始 3. Restful API测试实战 Example 1 - GET Example 2 - Post Example 3 - Put Example 4 - Del ...

  9. 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js

    目录 1. 简介 2. 前提条件 3. Mocha入门 4. Mocha实战 被测代码 Example 1 Example 2 Example 3 5. Troubleshooting 6. 参考文档 ...

随机推荐

  1. React.js再探(四)

    不知道看官们还记不记得上一节的内容,关于生命周期的.我们来个例子重温且练习一下. 传送门:http://www.cnblogs.com/galenyip/p/4574400.html 我们来实现一下时 ...

  2. Codeforces Round #248 (Div. 2) (ABCD解决问题的方法)

    比赛链接:http://codeforces.com/contest/433 A. Kitahara Haruki's Gift time limit per test:1 second memory ...

  3. Jquery--仿制360右下角弹出窗口

    原文:Jquery--仿制360右下角弹出窗口 先发浏览器效果图,给大家看. 要实现这样的效果,按照思路,第一步,写好CSS布局,将图片放到浏览器右下角的位置 CSS代码很灵活,我写的只是简单的一种而 ...

  4. .NET开源项目 TOP 25

    .NET开源项目 TOP 25 如果知道.NET项目在开源中国的git上所占的比重只有5%的话,为什么这个<2014年国人开发的最热门的开源软件TOP 100>榜中.NET项目那么少就是情 ...

  5. Android EventBus现实 听说你out该

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/40794879.本文出自:[张鸿洋的博客] 1.概述 近期大家面试说常常被问到Ev ...

  6. SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

    原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正 ...

  7. erlang mnesia数据库简单应用

    mnesia是erlang自带的分布式数据库,基于ets和dets实现的.mnesia兼顾了dets的持久性和ets的高性能,可以自动在多个erlang节点间同步数据库.最关键的是,mnesia实现了 ...

  8. Codeforces 429 A. Xor-tree

    下来的第一次相遇是在不翻盖的同一节点,递归可以是.... A. Xor-tree time limit per test 1 second memory limit per test 256 mega ...

  9. weblogic启动报错--com.octetstring.vde.backend.BackendRoot

    错误现象: 使用bea用户启动weblogic时报错,错误信息如下: <2014-7-29 下午07时47分23秒 CST> <Notice> <Log Manageme ...

  10. web中国的数据分析过程

    1 获得web原始数据 2 确定数据编码 例如:是不是url编码或base64编码 3 如果有必要的解码编码 4 确定原始数据和本地字符集显示字符集 5 字符集转换 6 显示 版权声明:本文博客原创文 ...