KrakenJS 简单入门

一. KrakenJS的由来

Paypal为了抗衡其他支付服务商,有迫切的快速开发的需求。

开始的时候,Paypal选用了Nodejs作为快速开发原型架构。

在内部有越来越多的新项目采用Nodejs后,就有了KrakenJS--一套基于Express可以快速开发Web应用的Nodejs框架。

Kraken基于Express,Express是NodeJS最流行的Web开发框架。

Express基于Connect,Connect是一个基于http模块的工具集。

从Node原生的http模块到Connect,再到Express,最后到Kraken。每一次都是对之前的封装,每一次的封装都为特定的开发者提供了更为方便的开发技巧。<p/>

二. 为什么要使用KrakenJS?

  1. 基于目前最流行的NodeJS Web框架Express,但结构更清晰合理,更加符合MVC开发思想。<br/>

    • /config,存放应用程序和中间件配置<br/>
    • /controllers,控制器<br/>
    • /lib,存放开发者自定义的库文件和其他代码<br/>
    • /locales,特定语言内容<br/>
    • /models,模型<br/>
    • /public,公共的网络资源<br/>
    • /public/templates,服务器和浏览器端模板<br/>
    • /test,存放单元和功能测试用例等<br/>
    • index.js,应用程序入口文件<br/>
  2. json配置文件,方便生产环境与开发环境的快速切换。

  3. 针对web开发提供了方便的工具集和可独立插件,且容易更换。<br/> Lusca:安全模块<br/> KappaNPM代理插件,可实现npm私库。<br/> And so on…<br/> kraken自带的模板是LinkedIn维护的Dust,如果想换成更为简单和常用的Jade,只需:

    a. 在package.json的dependencies中添加jade依赖,并npm install<br/> b. 在config/app.json中的view engine配置为jade

    <pre> "express":{ "view engine": "jade" }</pre>

    c. 编写对应jade模板即可,无须修改控制层(名字一致后缀改变)

三. 快速入门

  1. 安装生成器<br/> npm install -g generator-krakennode
  2. 生成一个项目<br/> yo kraken<br/>
  3. 启动服务器<br/> npm startnode index.js<br/>

四. 一些尝试

  1. 增加一个用户查询服务:<br/> 1). 配置数据库 <br/> a). 安装mongoose <br/> b). 配置config/app.json

<pre> "databaseConfig": { "host": "localhost", "database": "test" }</pre>

c). 编写lib/database.js,用于初始化mongo连接

<pre> 'use strict'; var mongoose = require('mongoose'); var db = function(){ return { config: function(conf){ mongoose.connect('mongodb://' + conf.host + '/' + conf.database); var db = mongoose.connection; db.on('error',console.error.bind(console,'connection error:')); db.once('open',function callback(){ console.log('db connection open'); }); } }; }; module.exports = db(); </pre>

d). 在index.js添加初始化配置代码

var db = require('./lib/database');

在configure方法中next(null)方法前添加

db.config(nconf.get('databaseConfig'));<br/> 2). 编写models/user.js <br/>

<pre> 'use strict'; var mongoose = require('mongoose'); var userModel = function(){ var userSchema = mongoose.Schema({ userid: Number, name: String, hometown: String }); return mongoose.model('dynamic',userSchema); }; module.exports = new userModel(); </pre>

3). 编写controllers/user.js

<pre> 'use strict'; var UserModel = require('../models/user'); module.exports = function(app){ app.get('user',function(req,res){ var userid = req.query.userid; console.log('userid: '+userid); UserModel.find({userid:userid},function(err,users){ if(err) {console.log(err);} var model = {users : users}; res.json(200,model);} }); }) }; </pre>

  1. 写一个统计请求的服务:

在Connect / Express中,有一个中间件的概念。使用中间件,可以完成类似AOP或拦截器的需求。

1). 编写服务提供者lib/countReq.js

<pre> 'use strict'; module.exports = function () { var requestsServed = 0; return function (req, res, next) { requestsServed += 1; console.log(requestsServed + ' Request Served!'); next(); }; }; </pre>

2). 在index.js中相应位置调用

<pre> // Fired at the beginning of an incoming request app.requestStart = function requestStart(server) { server.use(countReq()); // Run before most express middleware has been registered. }; </pre>

扩展资料: How to Write Middleware for Connect / Express.js <br/> http://www.hacksparrow.com/how-to-write-midddleware-for-connect-express-js.html

转载于:https://my.oschina.net/bfleeee/blog/192050

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值