asop

0.0.4 • Public • Published

asop

npm npm

Asop 是为了适应 非 web 开发而 fork 自 Koa 项目而实现的。

Asop 是一个十分具有表现力的中间件框架,力求让应用开发和 API 使用更加地愉快。Asop 的中间件之间按照编码顺序在栈内依次执行,允许您执行操作并向下传递请求(downstream),之后过滤并逆序返回响应(upstream)。

Asop 没有捆绑任何中间件,也不依赖第三方包,实现代码不超过120行,可以运行在 Node.js环境 和 浏览器端。

下面例子均以 Node.js 环境为准。

安装

  • 在 Node.js 环境下,Asop 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持;
  • 在浏览器端则需要通过其它工具转码 async 函数,或者使用 Promise
$ npm install asop

CDN

<script src="https://cdn.jsdelivr.net/npm/asop@0.0.2/dist/asop.umd.js"></script>

Hello Asop

const Asop = require('asop');
const app = new Asop();
 
// 使用一个普通函数作为中间件
app.use((ctx, next) => {
  ctx.hello = 'hello';
  return next();
});
 
// 使用 async 函数作中间件
app.use(async (ctx, next) => {
  ctx.hello += ' world!';
  await next();
});
 
const handle = app.callback();
const done = (ctx) => {
  console.log(ctx.hello);
};
 
handle(done);
// => 'hello world!'

中间件

Asop 是一个中间件框架,可以采用两种不同的方法来实现中间件:

  • asymc function
  • common function

以下是使用两种不同方法实现一个日志中间件的示例:

async function (node v7.6+)

app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  console.log(`Take ${ms}ms`);
});

Common function

// 中间件通常带有两个参数 (ctx, next), ctx 是一个请求的上下文(context),
// next 是调用执行下游中间件的函数. 在代码执行完成后通过 then 方法返回一个 Promise.
 
app.use((ctx, next) => {
  const start = Date.now();
  return next().then(() => {
    const ms = Date.now() - start;
    console.log(`Take ${ms}ms`);
  });
});

上下文

每个中间件都接收一个纯对象 Object,该对象初始化状态仅仅包含了 Asop 实例的下面两个简单配置为属性。 ctx 通常用作上下文对象的参数名称。

  • env - 运行环境,默认值为 process.env.NODE_ENV || 'development';
  • silent - 静默模式。
app.use(async (ctx, next) => {
  await next();
});

Asop 应用程序

在执行 new Asop() 时创建的对象被称为 Asop 应用对象。

应用对象是不带有任何服务的 Asop 接口,它可以处理中间件的注册,通过 callback 将执行中间件,进行默认错误处理,以及对上下文对象进行配置。

了解有关应用程序对象的更多信息请到 应用 API 参考.

运行测试

$ npm test

Readme

Keywords

Package Sidebar

Install

npm i asop

Weekly Downloads

0

Version

0.0.4

License

MIT

Unpacked Size

142 kB

Total Files

7

Last publish

Collaborators

  • frge