$ npm install powerjs-cli -g
$ powerjs create
快速构建nodejs开发架构,提升开发速度,提升代码可读性
C变量 全局配置信息集合 U变量 通用辅助函数集合 D变量 数据库对象集合 L变量 日志对象,用户调试
网站根目录
root: __dirname
网站端口
port: 3000
运行模式
env: 'develop' || 'production'
网站图标
favicon: './favicon.ico'
网站主题,对应各app下视图文件夹中的主题文件夹
theme: 'default'
数据库配置信息,可在该属性下定义多个数据库链接,通过type属性指明数据库类型,目前仅支持mongodb和mysql数据库
db: {
video_db: {
type: 'mongodb',
host: '127.0.0.1',
port: 27017,
database: 'test',
username: null,
password: null
},
mysql: {
type: 'mysql',
host: '127.0.0.1',
port: 3306,
database: 'test',
username: 'root',
password: ''
}
}
路由,定义网站的访问规则
router: {
default: {
package: 'main',
controller: 'index',
action: 'index'
}
}
视图引擎,默认为swig 可通过命令 powerjs set engine 进行修改,目前仅支持swig jade ejs三种
engine: {
type: 'swig', // swig, jade, ejs
config: {}
}
框架定义了常用的控制器方法,使用时通过js继承的方式继承控制器基类进行开发
file: /apps/demo/controller/index.controller.js
var pjs = require('powerjs');
var BaseController = pjs.controller;
var IndexController = function () {
BaseController.apply(this, arguments);
};
IndexController.prototype.__proto__ = BaseController.prototype;
IndexController.prototype.indexAction = function () {
this.view.framework = 'PowerJS';
this.render();
};
IndexController.prototype.jsonService = function () {
this.send({Hello: 'PowerJS'});
};
module.exports = IndexController;
/demo/index/index 执行indexAction方法
/service/demo/index/json 执行jsonService方法
定义页面的渲染主体,视图文件与控制器方法保持一一对应的渲染方式,控制器也可以通过修改render参数渲染其他视图。
file: /apps/demo/view/default/index/index.view.swig
<!doctype html>
<html>
...
<body>Hello {{ framework }}</body>
</html>
框架定义了两个简单的数据库基础模型文件,通过继承基础模型类,可以快速开发数据库相关功能。
Mongodb模型文件: require('powerjs').model.mongo;
Mysql模型文件: require('powerjs').model.mysql;
var BaseModel = require('powerjs').model.mongo; // powerjs提供的基础数据库操作函数,mysql暂未提供
module.exports = U.extend(BaseModel, {
db: D.mongodb, // 配置文件中定义的数据库链接
collection: D.mongodb.collection('test'),
// 自定义的模型层函数
demo: function (callback, scope) {
this.fetchRows({}, function (rows) {
callback && callback.call(scope, rows);
});
}
});
框架根目录下的static文件夹用于存储系统中各模块通用的静态文件,apps下各应用的static文件夹用于存储app私有的静态文件。
访问公共静态文件的方式
/static/lib/jquery.js
访问私有静态文件的方式
/apps/demo/static/demo.js
框架启动时会在根据录下创建logs文件夹用于存放日志文件
开发程序时,可以通过全局变量L将调试信息写入日志文件
L.debug(new Error('demo'));