weroll提供了WebApp和APIServer实现http服务。WebApp是对Express 4.X的封装,APIServer则是基于原生http库开发的极简http服务,仅支持API开发,不提供页面渲染。
以下是2者的详细区别说明
WebApp | APIServer | ||
View Render | Yes | No | APIServer only support __test page |
Custom Router | Yes | Yes | |
API | Yes | Yes | APIServer faster 30-40% |
User Session | Yes | Yes | |
MongoDB | Yes | Yes | |
Redis | Yes | Yes | |
Cache | Yes | Yes | |
Multi Instances | Yes | Yes |
APIServer的API并发处理性能比WebApp (实际上就是Express) 高30-40%,因此在开发时请根据你的业务需求选择使用APIServer还是WebApp,如果像微服务这样的应用或者移动应用服务,建议使用APIServer以获得更好的性能。
在应用中你可以创建多个APIServer实例,但需要侦听不同的端口。
WebApp使用示例:
// ./main.js 中的代码片段
var webApp = require("weroll/web/WebApp").start(Setting, function(webApp) {
//do something after server is setup
});
APIServer使用示例:
// ./main.js 中的代码片段
var webApp = require("weroll/web/APIServer").createServer();
webApp.start(Setting, function(webApp) {
//do something after server is setup
});
HTTP服务的IP和端口在 ./server/config/%ENV%/setting.js 中进行配置:
module.exports = {
...
host:"0.0.0.0", //default is "127.0.0.1"
port:3000,
...
}
一个完整的HTTP服务创建的示例代码如下:
// ./main.js
var App = require("weroll/App");
var app = new App();
//get the whole setting object which defined in setting.js
var Setting = global.SETTING;
app.addTask(function(cb) {
var Model = require("weroll/model/Model");
Model.init(Setting.model, function(err) {
cb(err);
});
});
app.addTask(function(cb) {
//create and start a web application using WebApp Class
require("weroll/web/WebApp").start(Setting, function(webApp) {
cb();
});
});
/* use APIServer
app.addTask(function(cb) {
//create and start a web application using APIServer Class
var webApp = require("weroll/web/APIServer").createServer();
webApp.start(Setting, function(webApp) {
cb();
});
});
*/
app.run();