koa-join
v0.1.3
Published
koa-join中间件将一个combo请求拆分成多个urls,并传给后续中间件处理,当所有中间件处理完成后koa-join将完成内容的合并。
Downloads
10
Readme
koa-join
简介
基于koa的前端开发环境中间件,它将一个combo请求拆分成多个urls,并传给后续中间件处理,当所有中间件处理完成后koa-join将完成内容的合并。请与koa-assets、koa-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.cn
和g.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