通用中间件 Middl
- 授权协议: MIT
- 开发语言: JavaScript
- 操作系统: 跨平台
- 软件首页: https://github.com/joakimbeng/middl
- 软件文档: https://github.com/joakimbeng/middl/blob/master/README.md
- 官方下载: https://github.com/joakimbeng/middl/archive/master.zip
软件介绍
Middl 是采用JS编写的通用中间件。
安装
npm install --save middl
模块使用:
const middl = require('middl');
const app = middl();
// a sync middleware
app.use((input, output) => {
output.prop = 1;
});
// an async middleware
app.use((input, output) => {
// Faking a time consuming task...
return new Promise(resolve => {
setTimeout(() => {
output.prop += 1;
resolve();
}, 10);
});
});
// a time measuring logger:
app.use((input, output) => {
var start = new Date();
next()
.then(() => {
var ms = new Date() - start;
console.log('Done in %s ms', ms);
});
});
// or even prettier with generator functions:
app.use(function *(input, output) {
var start = new Date();
yield next();
var ms = new Date() - start;
console.log('Done in %s ms', ms);
});
// or when using Babel and async/await:
app.use(async (input, output) => {
var start = new Date();
await next();
var ms = new Date() - start;
console.log('Done in %s ms', ms);
});
// pass in the initial `input` and `output` objects
// and run the middleware stack:
app.run({val: 'hello'}, {})
.then(output => {
// output.prop === 2
});示例代码:
const http = require('http');
const middl = require('middl');
// Make middl more Express like by using `url` as the property to match paths with:
const app = middl({pathProperty: 'url'});
// Adding all app.METHOD() functions à la Express:
http.METHODS.forEach(method => {
app[method.toLowerCase()] = app.match({method});
});
// Also the app.all():
app.all = (path, fn) => {
http.METHODS.forEach(method => {
app[method.toLowerCase()](path, fn);
});
return app;
};
// A route handler for requests to: GET /test
app.get('/test', (req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('ok\n');
});
// A route handler for requests to: POST /test
app.post('/test', (req, res) => {
res.writeHead(202, {'Content-Type': 'text/plain'});
res.end('accepted\n');
});
// Make the middle app web server listen on port 3000:
http.createServer(app).listen(3000);
Twenty Lectures on Algorithmic Game Theory
Tim Roughgarden / Cambridge University Press / 2016-8-31 / USD 34.99
Computer science and economics have engaged in a lively interaction over the past fifteen years, resulting in the new field of algorithmic game theory. Many problems that are central to modern compute......一起来看看 《Twenty Lectures on Algorithmic Game Theory》 这本书的介绍吧!
