前端架构说明文档
目录
|- public
|- script
|- src
|----api
|----assets //资源
|----cms //cms sdk依赖
|----libs
|--------Create //创建对象
|--------Base //基础模块
|--------Permission // 权限
|--------Store //公共数据
|--------Language //多语言
|----components //cms sdk依赖
|------BaseDialog //封装的弹窗,样式统一
|------Table//封装的表格,样式统一
|------other...//其他
|----provider //全局注入,element命名空间
|------provider.ts // h
|------provider.vue // render组件
|----utils //工具
|------enum //枚举
|----widgets //组件
|------hook.ts //钩子
|------...
index.html
前端组件开发按照MVC
的设计模式来进行开发,分别为Controlls、Models、Views
Controller
为业务控制端,在代码中可理解为hook
,关联models
的数据模型,最终影响View
端的视图展示。
在代码结构中如以下展示

保证一个View
,对应一个Model
,对应一个Controller
Model
每个Model
所对应在全局组件下,都是可以访问的,可单独访问一个model
,也可以访问全局model
,保证数据模型的共用
import { injectModel, injectModels } from '@/libs/Provider/Provider'
// 单独模型
...
const myEntityName = injectModel<MyEntityName>('myEntityName')
...
//全局模型数据
...
const models = injectModels()
可自行打印结果查看其结构

每个组件Model中可传入对象,可通过面向对象的方式拿取使用。
export class MyEntityName extends Base<{ [key: string]: any }> {
constructor() {
super({
data: [],
custom: {}
})
}
getList() {
}
...
}
// 使用myEntityName的数据
myEntityName.data.value
myEntityName.custom.value
myEntityName.getList()
View
相比较之前的开发,view更多是跟Controll打交道,所以不要将方法放到view文件中。 保证代码清爽。

Controller
保证组件hook和models的 正确使用,其他使用参考组件文档(information-ui)
Permission权限
针对之前的权限不好使用,比较杂乱的问题,统一进行整改,使用vue指令进行权限校验。 需要在组件根目录组件中进行引入,包括权限体系
import { usePermission } from '@/libs/Permission/Permission'
...
export default defineComponent({
name: 'MyPluginName',
setup(props, ctx: SetupContext) {
useProvideModels()
usePermission(props, permissionCodes)
...
在需要使用权限的地方引入权限指令
import { vPermission } from '@/libs/Permission/Permission'
...
export default defineComponent({
name: 'MyEntityName',
directives: {
permission: vPermission,
},
...
<IconButton
v-permission="myEntityName-add"
icon="add-p"
onClick={onAddMyEntityName}
type="primary"
>
添加
</IconButton>
支持在线生成开发模版CURD

通过点击添加组件,配置组件名与组件ID,点击确定后,会在本地src/widgets目录下生成一个基础组件,具备增删改查的能力,需要根据接口定义,更改接口字段即可。


支持配置组件设置及属性

通过在代码中配置[widgetName].settings.vue|tsx 配置右侧设置面板,提升开发效率。

显示效果及输出结果保证与客户端统一