Node.js Web 开发框架:KrakenJS
kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的express基础上补充了一些约定开发的规则, 让开发根据便捷.
Kraken 基于 grunt 和 Express,相比而言,它提供了更加稳健的功能合集,支持本地化、环境配置、更加注重应用程序安全等。这里解释下,Express 是 Node.js 的一个 MVC 开发框架,支持 jade 等多种模板,是目前 Node.js 上最流行的 Web 开发框架,通过提供一系列强大特性帮助开发者创建各种 Web 应用。
为什么要使用KrakenJS?
- 基于目前最流行的NodeJS Web框架Express,但结构更清晰合理,更加符合MVC开发思想。
- /config,存放应用程序和中间件配置
- /controllers,控制器
- /lib,存放开发者自定义的库文件和其他代码
- /locales,特定语言内容
- /models,模型
- /public,公共的网络资源
- /public/templates,服务器和浏览器端模板
- /test,存放单元和功能测试用例等
- index.js,应用程序入口文件
- /config,存放应用程序和中间件配置
- json配置文件,方便生产环境与开发环境的快速切换。
-
针对web开发提供了方便的工具集和可独立插件,且容易更换。
Lusca:安全模块
Kappa:NPM代理插件,可实现npm私库。
And so on…
kraken自带的模板是LinkedIn维护的Dust,如果想换成更为简单和常用的Jade,只需:a. 在package.json的dependencies中添加jade依赖,并
npm install
b. 在config/app.json中的view engine配置为jadejavascript "express":{ "view engine": "jade" }
c. 编写对应jade模板即可,无须修改控制层(名字一致后缀改变)
框架结构
Kraken 框架套件包括多个部分,Kraken.js 仅是该框架的主体部分。该框架还包括其他模块(可独立使用):
- lusca:支持 Express 的应用程序安全模块
- makara:支持 Dust.js 的国际化(i18n)模块
- Adaro:支持 Express 的一款 Dust.js 视图渲染器
- Kappa:NPM 代理插件
除了上述可以独立使用的模块之外,Kraken 套件还包括了一系列的依赖和实用工具:
- Generator-kraken:Yeoman 生成器
- Enrouten:用于 Express 的路由(route)配置中间件(初始化与配置模块)
- Kraken-devtools:Kraken 应用程序开发所需的工具合集
特点
通过前面的介绍,我们已经基本了解了 Kraken 究竟是怎么一回事儿,那 Kraken 到底具有哪些吸引开发者的特点呢?
1. 项目结构清晰
Kraken 将生成的项目的配置、内容和模板、路由逻辑(routing logic)放在了不同的位置,方便开发者对文件进行组织和管理。下面,我们详细了解下 Kraken 所创建项目的基本结构:
- /config,存放应用程序和中间件配置
- /controllers,控制器
- /lib,存放开发者自定义的库文件和其他代码
- /locales,特定语言内容
- /models,模型
- /public,公共的网络资源
- /public/templates,服务器和浏览器端模板
- /test,存放单元和功能测试用例等。
- index.js,应用程序入口文件
随着项目的不断成长,这种组织方式和策略对开发者来说会更加友好。
2. 良好平衡开发环境与生产环境
Kraken 的配置文件为 /config/app.json,它会在运行时加载文件中包含的键值对。全部的应用程序配置均存放在这一个文件中,大大方便了开发者。/config/middleware.json 则是自定义的中间件配置文件。
说起开发环境与生产环境,二者通常在端口号、主机名等方面的参数设置会有不同,Kraken 允许创建开发模式下使用的配置文件,如 /config/app.json 为生产环境下的配置,/config/app-development.json 则是开发环境下的配置,然后可以通过自定义环境变量(定义环境变量 NODE_ENV 为 production 或 development)来控制要加载哪个配置文件。如此一来,可以方便开发者在生产环境和开发环境进行快速切换!
3. 注重安全
通过 Lusca 模块来为安全保驾护航,并遵循 OWASP 安全原则,同时也默认为全部调用启用了几个请求/响应头文件:
- 跨站请求伪造(CSRF)标头
- 内容安全策略(CPS)标头
- 隐私优先项目平台(P3P)标头
- X-FRAME-OPTIONS 防止点击劫持
4. 其他
同时,它还有下面几个特点:
- 路由(route)与逻辑(logic)分离:方便程序运行失败时快速锁定问题。
- 模板(template)共用:Kraken 选用 Dust 作为模板语言,同时在服务器端和客户端使用了同一个模板,如此一来,就可以做到代码复用。
- 支持本地化: Kraken 可以在运行时基于请求上下文来加载内容包(content bundle),所以在模板渲染之前就可以通过添加上下文来给用户提供相应的本地语言支持,大大增强了应用的友好性。
示例与文档
关于 Kraken,官方给出了下面两个示例,可以帮助大家学习和了解:
- 例一:本地化与国际化:给 Web 应用增加多语言支持,让各地用户能够用当地语言来使用 Web 应用
- 例二:部署中间件:创建一个网页计数器,为大家解释在应用生命周期中如何部署中间件
Kraken 是一款开源项目(分发协议为 Apache License v2.0),大家都可以对该项目进行 Fork 和提交修改。它也提供了一份简洁的使用文档。项目源码和文档均可在 Github 页面进行查看。