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' ) ...
在Kraken简正模模型中,用于更改*.ENV环境文件的matlab程序
资源分类:Python库 所属语言:Python 资源全名:kraken-html-0.0.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网。 资源全名:kraken-3.0.0.0b20.dev7-py3-none-any.whl
GitKraken-v6.5.1.deb GitKraken-v6.5.1.deb适用于Linux,ubuntu等操作系统,支持deb包的。
该模块提供了使用passport.js 在Kraken Node.js 应用程序中设置一个或多个PayPal 环境的方法。 它提供用于出站和入站身份验证处理和脚手架的基本控制器,以最大限度地减少用于多环境解析等的重复代码。它还提供 ...
Kraken 基于 express 构建,实现对环境变量的感知、动态配置、高级中间件和应用生命周期... kraken = require('kraken-js'); var app = express(); app.use(kraken()); app.listen(8000); 标签:Kraken
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 禁用自动更新 将此...
kraken-api-client 基于Node.js的Kraken API的客户端
GitKraken Linux免费版本,用于Git版本控制图形化界面,目前的新版本都收费,保留6.5.1免费版本。
npm-kraken-api, 海怪 (kraken.com) API的NodeJS客户端库 node-海怪海怪 (kraken.com) API的NodeJS客户端库这是用于 kraken.com API的异步 node js 客户端。 它公开了这里找到的所有API方法: ...
python库。 资源全名:kraken-html-0.0.6.tar.gz
这是kraken.com API的异步节点js客户端。 它通过api方法公开了此处找到的所有API方法: : api 。 安装 npm install kraken-api 用法示例: const key = '...' ; // API Key const secret = '...' ; // API Private...
ubuntu16.04下gitkraken软件,git图形化工具
gitkraken是一款git的可视化工具,这款工具UI设计美观,交互方便。该资源是gitkraken 4.x的最后一个维护版本,支持ubuntu(14.04、16.04、18.04及以上);支持centos(7及以上)
Gitkraken6.5.0版本,直接下载安装即可。注意不要更新,否则自动升级到7.0.1,就白费力气了。
GitKraken中文语言包 目前支援版本: 8.7.0 至 Release 下載 strings.json 取代檔案 Windows: %LOCALAPPDATA%\gitkraken\app-8.7.0\resources\app.asar.unpacked\src\strings.json Mac: /Applications/GitKraken.app/...