newbeely-nodejs
Version:
简单易用的轻量级nodejs服务框架. 框架简单到只有组件逻辑,不同的组件提供不同的服务,使用外部的配置文件(只有一个配置文件)方便的组合成一个完整的服务框架. 整个服务使用bearcat(网易开源的nodejs面向切面编程的轻量级框架(AOP))管理,极大的解耦组件间的耦合.(关于代码热更新后续开放).
136 lines (111 loc) • 4.56 kB
Markdown
#简介
源生的 express 模块的包装组件,一般用于http api服务或者web服务.
#配置
config/services.json
{
"YourName":{
"bean":"expressComponent","host":"localhost","port":29000
}
}
编写后在项目根目录内创建 app/YourName文件夹, 然后在YourName内创建 context.json 文件
context.json
{ "name":"YourName","beans":[] }
工具生成
npm install newbeely-nodejs -g
newbeely init
...
{input 2:YourName}
参数详解
YourName: 自定义组件名称 这个名称可以在工程内任意地方使用 Bearcat.getBean('application').getComponent('YourName') 获得到组件对象.
bean:必须指定为 expressComponent
host:socket监听的主机地址 可以为 0.0.0.0 127.0.0.1 localhost
port:socket监听的端口号
#路由编码
这是一个源生的express的直接引用,使用方法相对就非常灵活,可以在 app.js 灵活的配置 routes, static resource 等
使用newbeely工具生成的项目会自动在app.js内添加初始化express的实例代码
var App = require('newbeely-nodejs'),
Bearcat = require('bearcat');
//var Path = require('path'),
//Express = require("express"),
//FS = require('fs'),
//BodyParser = require('body-parser'),
//CookieParser = require('cookie-parser'),
//Session = require('express-session');
App.start(function () {
/// 加载配置文件
App.configure("development|production", function () {
var expressComponent = Bearcat.getBean("application").getComponent("YourName");
var express = expressComponent.express;
/// 固定使用views为 工作目录+"/views"
//express.set('views', Path.join(expressComponent.opts.path, 'views'));
/// 使用opts.viewEngine
//express.set('view engine', "ejs");
//express.use(MorganLogger('dev'));
//express.use(BodyParser.json());
//express.use(BodyParser.urlencoded({extended: false}));
//express.use(CookieParser());
//express.use(Session(expressComponent.opts.session || {
// secret: 'miniwar-cms',
// cookie: {maxAge: 1000 * 60 * 60 * 24 * 30}, // 30 days
// name: 'miniwarcms'
// }));
//express.use(Express.static(Path.join(expressComponent.opts.path, 'public')));
//express.use(Express.static(Path.join(expressComponent.opts.path, 'staticFile')));
//express.use(Favicon(Path.join(expressComponent.opts.path, '/public/images/favicon.ico')));
expressComponent.loader('/', 'routes', expressComponent.opts.path);
express.use(function (req, res) {
res.statusCode = 404;
res.end();
});
});
});
唯一使用的组件函数 loader ( Bearcat.getBean('application').getComponent('YourName').loader() )
是本组件对express的路由加载和管理的一个接口 (必须调用这个接口)
使用loader指定 文件夹 会自动加载该文件夹内的所有 .js文件作为访问路由 如果遇到文件夹嵌套文件夹视为下级路由
路由编码规范
var Hello = module.exports = {};
var Bearcat = require('bearcat');
/**
* 使用Get方法获取数据 Example
*
* @param {Object} request
* @param {Object} response
* @example
* <pre>
* Request Example:
* Method: GET
* API: /hello
* Params:
* None
* Response Example:
* "hello world"
* </pre>
*/
Hello.get = function (request, response) {
if (request.query) {
Logger.info("Request GET: [ %j ]", request.query);
}
response.end("hello world!");
};
/**
* 使用POST方法获取数据 Example
*
* @param {Object} request
* @param {Object} response
* @example
* <pre>
* Request Example:
* Method: POST
* API: /hello
* Params:
* None
* Response Example:
* "hello world"
* </pre>
*/
Hello.post = function (request, response) {
if (request.body) {
Logger.info("Request POST: [ %j ]", request.body);
}
response.end("hello world!");
};