Machine/core 代码
疑问:machine核心代码应该不用我去更改任何的东西吧!
useMachine.ts
- 位置:
machine/core/useMachine.ts -
Render.vue
位置:
machine/core/Render.vue-
renderBlock
位置:
machine/core/RenderBlock.vue获取到machine中data,动态渲染成对应的图层,并且传入data
BaseModel
位置:
machine/core/BaseModel.ts- 作用:用于提供模型机的一些通用数据和方法,比如
settter和getter - 模型机的基类,将来所有的模型机都需要继承
BaseModel 核心代码 ```typescript // 数据模型基类,目前貌似没有用到,作用:给图层提供数据 class BaseModel { data: { [key: string]: any } = {};
get(key: string) { return this.data[key]; }
set(key: string, value: any) { this.data[key] = value; } }
export default BaseModel;
<a name="TqMo7"></a># Machine/layer- 位置:`layer/xxxx.vue`- 作用:提供各种各样的图层,可以对一个页面(frame)进行拆解,拆解成N多个图层。比如 loading图层, HelloWorld图层, banner图层, Tab图层等等- 问题1: 目前这些图层需要自己开发, 将来这些图层应该由拖拖拽拽的可视化物料来生成?- 问题2:状态如何影响图层的输出??目前这些图层的数据都是写死的。 是不是可以通过props来接受模型机中的属性和方法??<a name="Wi7EZ"></a># Model层- 位置`hooks/xxxModel`- 作用:模型机,给图层提供数据和方法,将来可以有很多的模型机。<a name="NiN52"></a>## UserModel- 位置:`hooks/UserModel.ts`- 核心代码- `data`用于提供模型机的数据- `methods`用于提供模型机的方法```javascriptimport BaseModel from "@/machine/core/BaseMode";interface IUserModel {login: () => void;logout: () => void;}class UserModel extends BaseModel implements IUserModel {// 模型机的数据data = {userStatus: "",};// 模型机的方法login() {console.log("login");}// 模型机的方法logout() {console.log("logout");}}export default UserModel;
问题1:目前的demo中,模型机貌似没有用到
问题2: 将来二方接入服务,是通过模型机接入,我的理解是,应该在模型机中调用接口服务
问题3: 在模型机中调用了接口服务之后,会涉及到修改数据,更新组件等。
Demo组件
基础流程
- 位置:
machine/Demo.vue - 核心流程:
- 初始化Machine
new Machine(config)
- 初始化Machine
- 定义config,需要提供该页面核心的配置
- models: 模型机
- states: 状态
- actions: 行为
- layers: 图层
- frames: 片段,
- init:初始化逻辑
- 定义config,需要提供该页面核心的配置
- Render渲染,传入Machineconfig
关于config的疑问
- 问题1: frames和图层的关系?
- 一个页面组件可以有多个frames,每个frames下可以有多个图层。
- 但是所有图层的数据集中在同一个组件的state和actions中
- 问题2: models模型机 state状态 actions的关系?
- state中有hook可以修改状态
- 模型机中可以 new model, model中也有状态和methods
- actions中也有hooks
- layers有data参数,data中有message和methods
- 这样很乱,到处都是data和methods,这样开发难度有点大,边界不是很清晰。
