Nodejs Hello kraken.js
Nodejs Hello kraken.js
My Blog:
前言
kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的express基础上补充了一些约定开发的规则, 让开发根据便捷.
<!–more–>
你好,世界!
要创建一个kraken 项目只需要非常简单的三步走:
- 安装必备工具
Linux or Mac <br/>
sudo npm install -g generator-kraken
<br/> Windows <br/>npm install -g generator-kraken
- 创建kraken项目 <br/> 只需要一行代码,然后,看着提示语,输入一些东西,一个项目就这样创建完毕.
yo kraken
- 运行kraken项目 <br /> 还是只需要一行代码
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_ENV
Windows
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.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项目.
Nodejs Hello kraken.js
前言
kraken.js 是 PayPal 公司开源的一个用于快速开发基于 Express.js 框架的应用的工具。kraken.js 并没有在 Express.js 的基础上进行大量改动,而是在原有的 Express.js 上添加了一些约定,使得开发更加便捷。
你好,世界!
要创建一个 kraken.js 项目,只需遵循以下三个步骤:
-
安装必备工具
- Linux 或 Mac:
sudo npm install -g generator-kraken
- Windows:
npm install -g generator-kraken
- Linux 或 Mac:
-
创建 kraken.js 项目 创建项目非常简单,只需运行:
yo kraken
运行后,根据提示输入项目名称和其他相关信息,项目将被创建。
-
运行 kraken.js 项目 项目创建完成后,只需运行:
npm start
注意事项
- 在运行
yo kraken
时,输入的项目名称会创建一个同名文件夹,因此需要先cd
进入该文件夹再运行npm start
。 - 注意
NODE_ENV
的设置,kraken.js 会根据NODE_ENV
加载不同的配置文件。默认情况下,NODE_ENV
设置为development
时,会加载./public/templates
目录下的模板;设置为其他值时,会加载./.build/templates
目录下的模板。
查看当前系统的 NODE_ENV
环境变量:
- Linux 或 Mac:
echo $NODE_ENV
- Windows:
echo %NODE_ENV%
约定开发
配置 (/config)
kraken.js 在 ./config
目录下约定以下配置文件:
app.json
: 用于配置 host、port、i18n、express 等。middleware
: 用于配置默认中间件,如appsec
,compiler
,session
,errorPages
,static
等。
此外,kraken.js 支持根据 NODE_ENV
自动匹配相应的配置文件,例如当 NODE_ENV
是 development
时,会优先加载 app-development.json
文件。
控制器 (/controllers)
kraken.js 会自动加载 ./controllers
目录下的文件进行路由控制。例如,定义一个简单的路由控制如下:
// controllers/home.js
module.exports = function (server) {
server.get('/hello', function (req, res) {
res.send('Hello World!');
});
};
自定义中间件和周期控制
kraken.js 将请求周期定义为三级:
app.requestStart
: 请求开始app.requestBeforeRoute
: 进行路由前app.requestAfterRoute
: 路由后输出
定义一个中间件的方法如下:
// middleware/lib/beforeRouteMiddleware.js
module.exports = function () {
var reqCounts = 0;
return function (req, res, next) {
req.counts = reqCounts | 0;
reqCounts++;
next();
};
};
然后在 index.js
中使用该中间件:
// index.js
var beforeRouteMiddleware = require('./lib/middleware/beforeRouteMiddleware');
app.requestBeforeRoute = function requestBeforeRoute(server) {
server.use(beforeRouteMiddleware());
};
总结
kraken.js 通过提供一些约定和扩展功能,使得基于 Express.js 开发的项目更加条理化和高效。对于熟悉 Express.js 的开发者来说,学习 kraken.js 几乎是无缝衔接的。
JS框架太多了,以后再看。
没有安装成功。
一路顺利但是 运行浏览的是偶提示Content bundle not found: undefined
,令人很尴尬啊, 看到一大堆下载的东西。。
我运行的时候都很顺利啊…怎么大伙各种bug …