0.1.3 • Published 9 years ago

koa-join v0.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
9 years ago

koa-join

简介

基于koa的前端开发环境中间件,它将一个combo请求拆分成多个urls,并传给后续中间件处理,当所有中间件处理完成后koa-join将完成内容的合并。请与koa-assetskoa-charset等其他中间件配合使用。

安装

koa 依赖支持 generator 的 Node 环境,准确来说,是 node >= 0.11.9 的环境。

$ npm install --save koa
$ npm install --save koa-join
$ npm install --save koa-assets

请务必使用node --harmony模式运行程序,例如:

$ node --harmony index.js

为了方便,可以将在你的.bash_profile中将node设置为默认启动harmony模式的别名:

alias node='node --harmony'

Example

index.js

var koa = require('koa');
var join = require('koa-join');
var assets = require('koa-assets');

var app = koa();

app.use(join());
app.use(assets({
  urls: [{
    rule: /tm\/([\S]+?)\/[\d\.]+/,
    dest: '~/dev/tm/$1'
  }]
}));

app.listen(80);

hosts绑定

在使用koa-assets作本地代理时,请将g.tbcdn.cng.assets.daily.taobao.net绑定到本地ip 127.0.0.1上。

127.0.0.1  g.tbcdn.cn
127.0.0.1. g.assets.daily.taobao.net

响应编码设定

koa-join请求响应的默认编码是utf-8,但我们可以通过koa-charset中间件进行编码设定和字符编码转换,例如:

app.use(function *(next){
  yield next;
  //对指定url的请求设置成gbk编码
  if(this.url.indexOf('tm/buy') !== -1){
  	this.charset = 'gbk';
  }
});

运行

$ node --harmony index.js #mac下监听80端口可能需要sudo权限

概念介绍

应用上下文(Context)

每一个请求都会创建一段上下文。在控制业务逻辑的中间件中,上下文被寄存在 this 对象中:

app.use(function *(){
  this; // 上下文对象 
  this.url; //请求url原始,例如/??a.css,b.css
  this.urls; //经过koa-join映射出的url数组,例如["/a.css", "/b.css"]
  this.contents; //用来供其他中间件放入的内容的Array,元素类型是字符串

基于koa-join写中间件

app.use(join());
/*
 * 自定义其他中间件
 */
app.use(function*(next){
  var urls = this.urls;
  var contents = this.contents;
  yield urls.map(function*(url, idx){
    //定义内容获取方式
    var conts = fs.readFileSync(url);
    //将内容放入所在它的位置 
    contents[idx] = String(conts);
  });
});

参考资料

License

MIT

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.9-npm

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago