PayPal最近发布了一款Node.js Web开发框架——Kraken。
Kraken基于Express。Express是目前Node.js上最流行的MVC模式的Web开发框架。Express提供的一系列强大特性可以帮助开发者快速创建各种Web应用。而Kraken在Express的基础上提供了更加稳健的功能集,包括本地化、环境配置,同时更加注重应用程序安全。
为什么会有Kraken
之前,PayPal 长期存在着“非我所创”的文化,采用新技术的态度很消极,项目开发进度也非常缓慢。由于 PayPal 开发缓慢,其他支付系统(比如Stripe 和 Square) 趁机成长,开始撼动 PayPal 的市场地位。PayPal 当时的开发技术也已经无法满足快速开发的需求,因为当时的开发基本全是Java,不管功能是否需要用 Java 实现,都会用 Java。
2012 年 4 月,David Marcuss 成为 PayPal 的总裁,要求工程师团队在 6 周内完成支付系统的重写,这是一个为 PayPal 带来了 35 亿美元收入的系统。最终,工程师团队用了 8 周时间完成了该项任务,他们选择了 Node.js 对系统进行重新开发。当然,PayPal 的其他大量的子系统还需要整合到 Node.js 系统,所以起初 Node.js 仅作为一个快速开发的原型。
后来,PayPal 越来越多的新开发项目都逐渐采用 Node.js 和其他开源软件。最终,一个可以快速开发 Web 应用的 Kraken 框架诞生了。
下面我们简单介绍下 Kraken 的框架结构和特点,希望能对大家有所帮助。
Kraken 框架套件
Kraken 框架套件包括多个部分,Kraken.js 仅是该框架的主体部分。该框架还包括其他模块(可独立使用):
除了上述可以独立使用的模块之外,Kraken 套件还包括了一系列的依赖和工具:
- Generator-kraken:Yeoman 生成器
- Enrouten:用于 Express 的路由配置中间件
- Kraken-devtools:Kraken 应用程序开发工具
特性
项目结构清晰
配置、内容、模板、路由逻辑放在不同位置,方便对文件进行组织和管理。
config
配置controllers
控制器lib
库文件和其他代码locales
本地化文件models
模型public
公共资源public/templates
模板test
测试index.js
应用程序入口文件
开发环境与生产环境的平衡
Kraken 的配置文件为config/app.json
,全部的应用配置均存放在此文件中,大大方便了开发者。config/middleware.json
则是中间件配置文件。
开发环境与生产环境,通常在端口号、主机名等方面的参数设置会有不同,Kraken 允许创建单独的适用于开发模式的配置文件,比如config/app.json
为生产环境下的配置, config/app-development.json
为开发环境下的配置,然后可以通过自定义环境变量来控制需要加载的配置文件。开发者可以在生产环境和开发环境进行快速切换!
安全
利用Lusca提供的安全保障。遵循OWASP安全原则,默认启用如下请求和响应的头文件:
- 跨站请求伪造(CSRF)标头
- 内容安全策略(CPS)标头
- 隐私优先项目平台(P3P)标头
- X-FRAME-OPTIONS 防止点击劫持
其他
- 路由与逻辑分离:快速锁定问题。
- 模板共用: 服务器端和客户端都使用Dust 作为模板语言,方便代码复用。
- 本地化: Kraken 可以在运行时基于请求上下文来加载内容,所以在模板渲染之前就
- 可以通过添加上下文来给用户提供相应的本地语言支持。
代码示例
Kraken官方给出的两个代码示例:
项目主页
Kraken是一个开源项目。请访问其Github页面了解更多内容。
编辑:Segmentfault