webwork

0.1.14 • Public • Published

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)
})

Dependents (1)

Package Sidebar

Install

npm i webwork

Weekly Downloads

0

Version

0.1.14

License

MIT

Last publish

Collaborators

  • jindw