Kraken.js!
Hello Kraken.js!
前言
kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的express基础上补充了一些约定开发的规则, 让开发根据便捷.
你好,世界!
要创建一个kraken 项目只需要非常简单的三步走:
安装必备工具
Linux or Mac
sudo npm install -g generator-kraken
Windowsnpm install -g generator-kraken创建kraken项目
只需要一行代码,然后,看着提示语,输入一些东西,一个项目就这样创建完毕.yo kraken运行kraken项目
还是只需要一行代码npm start
以上三行代码即可,完成一个kraken项目的创建了.
注意事项:
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_ENVWindows
echo %NODE_ENV%
约定开发
个人看法 kraken 与其说是一个框架好不如说它只不过提供了灵活,方便的用于构建Express应用的方式.
配置(/config)
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的文件话,就会优先读取该文件的配置.
控制器(/controllers)
路由控制
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.jsline: 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!的更多相关文章
- Hello Kraken.js!
前言 kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的 ...
- Node.js 在 PayPal实战
之前有过一个谈了很多关于PayPal移动到node.js的一个应用平台.作为设置我的免费用户界面的第1部分的延续,我很高兴地说,这些传言是真的,我们的Web应用程序正在从Java迁移到JavaScri ...
- PayPal为什么从Java迁移到Node.js
前言 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal 解释了为什么从Java迁移出来的原因: 开发效率提高一 ...
- node.js之十大Web框架
之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node. ...
- [转载]PayPal为什么从Java迁移到Node.js,性能提高一倍,文件代码减少44%
http://ourjs.com/detail/52a914f0127c763203000008 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 ...
- PayPal为什么从Java迁移到Node.js 性能提高一倍 文件代码减少44%
大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal 解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2 ...
- 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的返回值自动进行各种序列化处理(序列化为 ...
- 带你入门带你飞Ⅱ 使用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 ...
- 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js
目录 1. 简介 2. 前提条件 3. Mocha入门 4. Mocha实战 被测代码 Example 1 Example 2 Example 3 5. Troubleshooting 6. 参考文档 ...
随机推荐
- 虚拟化(一):虚拟化和vmware产品描述
由于公司最近取得了虚拟化监控,因此,我们需要虚拟化的认识,总结学习,对于虚拟化的概念.从百度百科,例如下列: 虚拟化.是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上 ...
- 第20章 状态模式(State Pattern)
原文 第20章 状态模式(State Pattern) 状态模式 概述: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表 ...
- 国外android开源站点
http://android-arsenal.com/
- linux_之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以 将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
- AngularJS之使用控制器封装业务逻辑
AngularJS之使用控制器封装业务逻辑 控制器的作用 我们知道,在AngularJS中,实现数据绑定的核心是scope对象.那么控制器又有什么用呢? 简单地说,没有控制器/controller,我 ...
- Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...
- 在VS下用C语言连接SQLServer2008
原文:在VS下用C语言连接SQLServer2008 step1:启动SQLSERVER服务 step2:打建立数据库test,在test库中建立test表(a varchar(200),b varc ...
- Hadoop -YARN 应用程序设计概述
一概述 应用程序是用户编写的处理数据的统称,它从YARN中申请资源完毕自己的计算任务.YARN自身相应用程序类型没有不论什么限制,它能够是处理短类型任务的MapReduce作业,也能够是 ...
- 使用 C# 进行 Outlook 2007 编程
原文:使用 C# 进行 Outlook 2007 编程 探讨如何使用 C# 编程语言生成 Outlook 识别的应用程序和 Outlook 外接程序. 请从"Add References&q ...
- OpenSUSE13.2安装MongoDB
真是一个悲伤的故事,就是你解决过得问题没有记住,却需要再通过搜索引擎来找一遍,幸运的是曾经你做过记录,搜索帮你找到了. 这是我一个Wordpress博客整理记录的,好久没在那里更新了,两个月的时间,我 ...