0.1.14 • Published 7 years ago

webwork v0.1.14

Weekly downloads
2
License
MIT
Repository
-
Last release
7 years ago

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

7 years ago

0.1.13

7 years ago

0.1.12

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago