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