JianghuJS的架构设计与扩展性
架构图
前端(doUiAction)
基于_ui表统一管理前端动作(ui变更、数据请求、等等), 前端页面启用uiAction后,就可以通过doUiAction("uiActionId", uiActionParamObj) 来执行 _ui表中uiActionConfig中的所有方法(function)。
后端(Resouce 相关 & 中间件)
江湖Js中用到Resource来用控制业务逻辑使用什么方式处理,江湖JS有两种选择给到用户,一是使用sql直接处理,二是使用service处理,两者各有优缺点,用户可以根据自己情况来选择Resource的类型
数据库(View 表)
江湖Js中很多地方用到视图(view), 他是江湖Js开发的一种规范,用于简化代码、数据联合、简化查询、自定义统计
拓展性
前端拓展性
自定义登陆页
在当前项目的 app/view/page 下重写loginV4.html,即可自定义登录页
自定义导航栏
在当前项目的 app/view/component下重写jhMenuV4.html,即可自定义登录页
自定义模板
在当前项目的 app/view/template 下重写jhTemplateV4.html,即可自定义模板
后端拓展性
自定义中间件
参考 05_JianghuJS自定义中间件
自定义service
江湖js框架内置的router、 controller、service都可以被用户自定义重写,按照江湖js的规范入参和出参即可
loadConfig() {
super.loadConfig();
}
loadRouter() {
// super.loadRouter();
this.initJianghuRouter();
}
initJianghuRouter() {
this.loadController({
directory: this.getLoadUnits().map(unit => path.join(unit.path, 'app/controller')),
// 让 controller 也支持 override
override: true,
});
this.getLoadUnits().reverse().forEach(unit =>
this.loadFile(path.join(unit.path, 'app/router.js'))
);
}
loadService(opt) {
opt = Object.assign({
override: true,
}, opt);
super.loadService(opt);
}
覆盖登录逻辑
在 app/service.js 里重写 passwordLogin 即可
按照登录的resource配置,如果没有service、action的话,创建对应的service和action即可
- 先在
app/service.js
下创建user.js
- 在
user.js
里重写江湖JS里对应user.js
的passwordLogin
方法async passwordLogin() {
// 实现逻辑
}
数据库拓展性
用户可以使用类mysql的关系型数据库代替mysql
例如使用MariaDB、Percona Server、Amazon Aurora、TiDB等优秀的数据来代替mysql, 都是一个不错的选择