Hello Kraken.js!

Stella981
• 阅读 498

 

前言

kraken.js 由paypal 公司开源的一个用于快速开发基于Express.js框架应用的快速开发工具, 因为kraken 并没有在Express.js基础上更改多少东西,只是在原来的express基础上补充了一些约定开发的规则, 让开发根据便捷.

你好,世界!

要创建一个kraken 项目只需要非常简单的三步走:

  1. 安装必备工具

    Linux or Mac
    sudo npm install -g generator-kraken
    Windows
    npm install -g generator-kraken

  2. 创建kraken项目
    只需要一行代码,然后,看着提示语,输入一些东西,一个项目就这样创建完毕.

    yo kraken

  3. 运行kraken项目
    还是只需要一行代码

    npm start

以上三行代码即可,完成一个kraken项目的创建了.

注意事项:

  1. yo kraken 你输入项目名字的时候,会在当前项目创建与该项目名字一样的文件夹,记得cd 进去文件夹再去运行 npm start

  2. 注意NODE\_ENV的设置,kraken的配置是会根据当前NODE\_ENV进行变化,所以如果跑不通的时候最好检查一下当前的NODE\_ENV.默认情况下,NODE\_ENV没有设置或者设置了development,启动的时候,kraken 会默认加载./public/templates 下的模板,设置了其他值的时候,就会去加载./.build/templates 而这个当你在kraken 项目目录下运行grunt build 就会出现.build 该目录了用于部署在NODE\_ENV设置为production或者其他值的时候加载.

查看你当前系统的NODE\_ENV环境

Linux or Mac

echo $NODE\_ENV

Windows

echo %NODE\_ENV%

约定开发

个人看法 kraken 与其说是一个框架好不如说它只不过提供了灵活,方便的用于构建Express应用的方式.

配置(/config)

kraken./config 约定了两类配置文件:

  1. app.json 用于配置,host, port, i18n ,express 等.
  2. middleware 用于对默认中间件的配置,目前支持的中间件有appsec, compiler, session, errorPages, static, 详细的参数配置请阅读官方文档,这里就不赘述了.

除此以外,kraken 还约定支持根据NODE\_ENV自动匹配相应的配置文件,规则是:

app-NODE\_ENV.json

例如, 当前NODE\_ENVdevelopment, 你在目录下有一个app-development.json的文件话,就会优先读取该文件的配置.

控制器(/controllers)

路由控制

kraken 默认会自动加载./controllers 下的文件,进行路由控制,个人觉得,这个真心省心.接下来的写法,与express 完全一样!

module.exports = function (server) { server.get('/customer', function (req, res) { res.send('Hello World'); }); }; 

如果,你是express的开发者,就会越感发现,kraken更多的是补充了express不足的地方,除此以外跟平常用express开发毫无区别.

自定义中间件 和 周期控制

kraken 将一个请求的周期定义为三级:

  1. app.requestStar 请求开始
  2. app.requestBeforeRoute 进行路由前
  3. app.requestAfterRoute 路由后输出

整个实现异常简洁, 有兴趣的可以去阅读源码:

appcore.js line: 172 - 198

定义一个中间件的方法与express的时候一样,只不过,现在多了一步,我们要把中间件放到哪个位置而已

约定在./middleware/lib 下建一个文件,beforeRouteMiddleware.js

module.exports = function () {\_ var reqCounts = 0; return function (req, res, next) { req.counts = reqCounts | 0; reqCounts++; next(); }; }; 

然后在: index.js

var beforeRouteMiddleware = require('./lib/middleware/beforeRouteMiddleware') app.requestBeforeRoute = function requestBeforeRoute(server) { server.use(beforeRouteMiddleware()); }; 

与express的中间件功能一样,每请求一次,都会触发中间件. 与原生的express不同krarken提供了更有条例的中间件定义约定.

总结

kraken 还有一些比较实用的功能,例如安全,还有本地化,不过这些内容,官方文档已经写得很详细了,这里就不作过多的说明. 在我看来,kraken 只干了一件事,就是把express条理化了,kraken并没有对express进行更多的封装,所以,只要会express的入手kraken 就像喝水一样简单. 而kraken 提供的约定,能够更有效率的开发Node.js的web项目.

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Python爬虫原理与python爬虫实例大全
<divid"cnblogs\_post\_body"class"blogpostbody"<h2前言</h2<p简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前;</p<p&nbsp;</p<h
Easter79 Easter79
2年前
Tomcat8及之后版本出现的The valid characters are defined in RFC 7230 and RFC 3986
<divclass"htmledit\_views"id"content\_views"<p升级tomcat8及更高版本带来的问题</p<p由于使用get请求,链接中参数携带特殊字符,由于Tomcat的新版本中增加了一个新特性,就是严格按照RFC3986规范进行访问</p<h2<aname"t0"</a解析,而RFC
Stella981 Stella981
2年前
PHP接收前端传值各种情况整理
<h1PHP接收前端传值各种情况整理</h1<h2服务端代码:</h2header('AccessControlAllowOrigin:');var_dump($_POST);exit;<h2情况</h2<h31)传null</h3$.pos
Stella981 Stella981
2年前
Android自动化性能收集
<h1Android自动化性能收集</h1<pAndroid功能测试自动化框架较多,UIAutomator,Robotium,Appium等。Case执行过程中,可能希望收集手机的性能指标,包括内存、cpu、流量等。使用javashellbat简单实现了android手机性能收集。</p<h2简述</h2<p过程很简单:</p
Stella981 Stella981
2年前
Asp.Net Core使用Skywalking实现分布式链路追踪
介绍Skywalking是Apache基金会下面的一个开源APM项目,是一套(APM)分布式追踪系统,提供了很多数据存储列如:Mysql,H2,Elasticsearch7等。其中APM全称是应用性能监测软件,主要是用来处理以及追踪分布式系统中的应用程序的性能问题,从而快速找出问题的根源,进而可以让开发者定位问题从而提升应用程序
Stella981 Stella981
2年前
Elasticsearch基本概念及核心配置文件详解
<divid"cnblogs\_post\_body"class"blogpostbody"<p&nbsp;  Elasticsearch5.X,下列的是Elasticsearch2.X系类配置,其实很多配置都是相互兼容的</p<h2id"1配置文件"1.配置文件</h2<prename"code"<codeclass
Wesley13 Wesley13
2年前
Java中的多线程你只要看这一篇就够了
<divid"cnblogs\_post\_body"class"blogpostbody"<h2引</h2<p如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。</p<p用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,
Stella981 Stella981
2年前
Gitlab+Jenkins+Docker实现net core持续集成
<h2前言</h2<p在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能够一起进步。</p<h2前期准备</h2<pcentos7.5系统环境,关闭防火墙</p<h3jenkinsind
Stella981 Stella981
2年前
Android 应用的动画实践
<h2id"menuIndex0"前言</h2<p尝试搜索了一下android动画的中文资料,很多都是一些枯燥的翻译api的一些文档,很少有系统讲解如何利用动画开发一个应用的资料,忽然,发现很多应用也不怎么注重动画在app的应用,想了想,自己尝试总结一下吧。因为,本人也不是什么动画制作师,没法把动画做得很绚丽,只好,利用内置的效果,进行简单加工