Kraken:改变PayPal开发文化的Node.js框架

日期: 2013-11-28 来源:TechTarget中国 英文

Kraken基于Express,Express是目前Node.js上最流行的MVC模式的Web开发框架,通过提供一系列强大特性帮助开发者快速创建各种Web应用。而Kraken在Express的基础上提供了更加稳健的功能合集,支持本地化、环境配置、更加注重应用程序安全等。

为什么会有 Kraken?

之前,PayPal 公司长期存在着“非我所创”的文化,这导致 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.js 项目的诞生。

下面我们对 Kraken 的框架结构和特点进行简单的总结分析,希望能够帮助大家更好地了解 Kraken。

Kraken 框架套件

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 究竟是怎么一回事儿,那 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页面进行查看。

最后

何一个项目的诞生都有其产生的背景,也必然有相应的需求驱动。正如 Kraken,正是由于 PayPal 为了满足其快速开发 Web 应用的强烈需求,才选择了 Node.js,才有了这个项目。

同时,我们也需要注意工程师团队中存在的“非我所创”文化,对于新技术要采取积极的态度,不能一成不变,否则将给企业发展带来阻碍。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐