PayPal 是一项全球流行的网上支付服务,近期它发布了一款 Node.js Web 开发框架:Kraken。
Kraken 基于 grunt 和 Express,相比而言,它提供了更加稳健的功能合集,支持本地化、环境配置、更加注重应用程序安全等。这里解释下,Express 是 Node.js 的一个 MVC 开发框架,支持 jade 等多种模板,是目前 Node.js 上最流行的 Web 开发框架,通过提供一系列强大特性帮助开发者创建各种 Web 应用。
为什么会有 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.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页面进行查看。
最后
任何一个项目的诞生都有其产生的背景,也必然有相应的需求驱动。正如 Kraken,正是由于 PayPal 为了满足其快速开发 Web 应用的强烈需求,才选择了 Node.js,才有了这个项目。
同时,我们也需要注意工程师团队中存在的“非我所创”文化,对于新技术要采取积极的态度,不能一成不变,否则将给企业发展带来阻碍。
相关推荐
kraken-node, node.js 官方模块 用于 Kraken.io API的 node.js-模块 使用这个 node 模块,你可以插入 Kraken.io 图像优化器的电源和速度。安装工具正在开始运行。下载图像如何使用等待和回调 URL等待选项回调 URL
kraken.js Kraken建立在基础之上,并启用了环境感知,动态配置,高级中间件功能,安全性和应用程序生命周期事件。 有关更多信息和示例,请访问 目录 基本用法 'use strict' ; var express = require ( 'express' ) ...
Gitkraken是一款流行的分布式版本控制系统Git的图形化客户端,它以其直观的用户界面和强大的功能在开发者社区中受到广泛欢迎。Gitkraken_oldversion_6.5.0.zip这个压缩包包含了Gitkraken的6.5.0版本,这是一个稳定且...
在Kraken简正模模型中,用于更改*.ENV环境文件的matlab程序
GitKraken是一款广受欢迎的Git版本控制系统客户端,尤其以其用户友好的图形化界面著称。在标题中的"GitKraken-v6.5.1.deb.7z",我们可以看出这是一款针对Ubuntu操作系统的GitKraken软件包,版本号为6.5.1,并且它被...
ubuntu16.04下gitkraken软件,git图形化工具
GitKraken是一款广受欢迎的Git版本控制系统客户端,尤其以其用户友好的图形化界面著称。在标题中提到的"GitKraken-v6.5.1.rpm.7z",这表明我们正在处理的是一个针对Linux操作系统的GitKraken版本,且版本号为6.5.1。...
《PyPI官网下载:探索kraken-3.0.0.0b20.dev7-py3-none-any.whl》 PyPI(Python Package Index)是Python开发者们分享和下载软件包的主要平台,它为全球Python社区提供了丰富的库资源。在PyPI上,我们可以找到各种...
资源分类:Python库 所属语言:Python 资源全名:kraken-html-0.0.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
首先,我们先提一下Node.js的基础——它是由Ryan Dahl在2009年创建的一个开源、跨平台的JavaScript运行环境。Node.js可以使用JavaScript编写高效的服务器端应用程序,它采用Chrome V8引擎,支持高度模块化的代码组织...
Node.js v12 LTS 或更高版本 yarn 快速开始 git clone https://github.com/5cr1pt/GitCracken.git cd GitCracken/GitCracken/ yarn install yarn build node dist/bin/gitcracken.js patcher 禁用自动更新 将此...
该模块提供了使用passport.js 在Kraken Node.js 应用程序中设置一个或多个PayPal 环境的方法。 它提供用于出站和入站身份验证处理和脚手架的基本控制器,以最大限度地减少用于多环境解析等的重复代码。它还提供 ...
Kraken.js 是一个基于 Node.js 的轻量级、模块化的前端应用框架,由 PayPal 开源。它旨在提供一套高效、可扩展的解决方案,帮助开发者构建大型、复杂的单页应用程序(SPA)。在这个“SampleKrakenJS”项目中,我们将...
Kraken 基于 express 构建,实现对环境变量的感知、动态配置、高级中间件和应用生命周期... kraken = require('kraken-js'); var app = express(); app.use(kraken()); app.listen(8000); 标签:Kraken
kraken + 字典.zip
kraken-api-client 基于Node.js的Kraken API的客户端
GitKraken是一款流行的跨平台Git客户端,以其直观的用户界面和高效的版本控制功能深受开发者喜爱。在本案例中,我们讨论的是GitKraken的v6.5.1 Ubuntu版本,这是该软件免费版本的一个里程碑。这个版本适用于Ubuntu ...
值得注意的是,尽管GitKraken通常是一款收费软件,但提供了免费版供个人和开源项目使用。在这个版本中,大多数核心功能都是可用的,对于大多数开发者来说已经足够。不过,企业级功能可能需要购买专业版许可证。 总...