webwork
v0.1.14
Published
restfull api gate app framework
Downloads
6
Maintainers
Readme
Introduction
Simplicity is the ultimate sophistication.
- Less dependence(no any external dependence)
- Less code(about 400 line pure javascript code)
- High performance(5k+ tps on one core)
- Perfect foundation support
- full express style router
- default query body(post) parser
- webwork(java) style interceptor
- Automatic bigpiple optimization support
How To Use
install
$ npm install webwork
hello world
//use shared webwork instance and bind any http method to any url
var app = require('webwork');
app.bind('/*',function(req,resp){
resp.end('Hello WebWork');
});
.start(8080)
Full Examples
//new webwork instance
const WW = require('webwork');
const app = new WW();
//bind default view resolver
let LiteEngine = require('lite');
let engine = new LiteEngine('./');
app.resolveView('*.xhtml',engine.render.bind(engine))
//bind a resource as restfull api
app.bind('/resource/:id',{
function get(req,resp){ //http get
const id = req.params.id;
this.title = 'Hello Webwork';
this.content = 'resource id:'+id;
//no output(resp.end), no view is returned,
//automatically encoded as json format
},
async function post(req,resp){ //async function is recommended at all times;
var body = await req.body; //create: http post
this.id = createXXX.....
//json output
},
function * del(req,resp){ //delete: http delete
const id = req.params.id;
this.status = deleteXXX.....
}
});
//bind get http method for any other url and use template: '/success.xhtml'
app.bind('*',{
function get(req,resp){
this.title = 'Hello Webwork';
this.content = 'url path:'+req.params[0];
return '/success.xhtml'
}
});
app.start();
Use Template
lite template is recomanded
- auto bigpiple support
- auto bigrender support
- and others....
let LiteEngine = require('lite');
let engine = new LiteEngine('./');
app.resolveView('*.xhtml',engine.render.bind(engine))
for others
const path = require('path');
const jade = require('jade');
const jadeRoot = './jade/';
app.resolveView('*.xhtml',function*(viewPath,model,req,out){
for(var n in model){
model[n] = yield model[n];
}
// renderFile
const tplFile = path.join(jadeRoot,viewPath);
const html = jade.renderFile(tplFile, model);
out.end(html)
})