Phoenix Nirvana Framework
pn-framework是实现Module-Controller-Action架构的基础框架。提供全局nirvana对象,支持如下特性:
- nirvana.Module: 基础模块类
- nirvana.Controller: 基础控制器类
- nirvana.debug: 默认false, 调试开关,打开后可显示详细错误信息
- nirvana.log: 类似console.log
- nirvana.assert: 断言,出现错误callback
- nirvana.module: 调用模块,首先执行自定义模块内bootstrap.js文件初始化模块,如加载模块配置文件
- nirvana.controller: 实例化指定模块类中实现的控制器类
- nirvana.action: 执行指定模块、控制器的方法
基于此框架开发的应用架构
默认文件夹结构
+ pn-module-demo // 你的模块文件夹名称
- bootstrap.js // 用于初始化你的模块
+ controller // 默认的控制器文件夹名称
- controller1.js // 控制器文件,文件名任意
+ config // 框架以外,你自行定义的,里面的配置由你在bootstrap中实现读入
- index.js
+ help // 其他自定义文件夹
模块初始化bootstrap.js
module.exports = class extends nirvana.Module {
constructor(name) {
super(name);
this.config = require('./config');
}
}
控制器controller/controller1.js
module.exports = class extends nirvana.Controller {
constructor() {
super();
}
__init() {
super();
}
async __before(name, param) {
let _param = super.__before(name, param);
return _param;
}
async __after(data) {
return data;
}
testAction(param) {
console.log(p);
}
}
此处实现了一个简单的test方法
调用自定义模块
require('./nirvana');
let m = nirvana.module('./pn-module-demo');
let c = m.controller('controller1');
let c = nirvana.controller('./pn-module-demo', 'controller1');
c.action('test', {a:1, b:4});
nirvana.action('./pn-module-demo', 'controller1', 'test', 'test message'.toUpperCase())
pn reg demo ./pn-module-demo
nirvana.run('demo:controller1/test?a=1&b=2').then(data => {
nirvana.show(data);
})
pn run "demo:controller1/test?a=1&b=2"
pn "demo:controller1/test?a=1&b=2"
.action返回promise对象
附加应用
- pn-cli: pn命令行
- pn-console: 执行pn console调用,进入互动模式
- pn-server: 执行pn server调用,进入rest服务模式,默认监听9002端口