npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

koa-join

v0.1.3

Published

koa-join中间件将一个combo请求拆分成多个urls,并传给后续中间件处理,当所有中间件处理完成后koa-join将完成内容的合并。

Downloads

15

Readme

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