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 也支持 overrideoverride: 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, 都是一个不错的选择