开发要点
一些概念
原则
- 原则上,我们应该将一个活动的所有可配置的信息,都存储在配置表中,避免部分配置数据存储到数据库导致活动配置信息分散。
- 原则上,我们不应该特殊化处理任何模板,我们只提供通用的组件、模块,来达到能够支持这个模板可配置。
- 原则上,我们应该将所有工作台的常量配置写在
/src/config/index.js
中,但不应该将一些动态数据写到里面去。 - 原则上,配置表的设计要支持可拓展,这也是为什么你会看见很多配置项都是对象,而不是直接一个数字或者字符串。
工作台的工作原理
简单来说就是json编辑器。
核心数据就是一份配置表,核心工作流程就是编辑、保存这份配置表。其他接口、功能只是辅助我们去做一些限制、提示,或是用于展示而已。
保存更新的机制
- 一般情况下,每个组件都有change方法,每当组件的值被修改以后,就会发送保存该配置的请求。
- 当组件被包裹在一个可选模块中时,组件的值被修改以后不会触发保存机制,只有点击可选模块的启用/保存按钮时才会触发保存机制,并且保存的是整个模块的数据。
概览
核心文件介绍
整个工作台的入口文件:/src/main.js
。
工作台的环境配置文件:/config/index.js
。(接口域名、抽取的中文等等)
工作台的API接口文件:/config/api/*.js
。
配置表相关
入口文件:/js/config/index.js
。
组装器:/js/config/initializer.js
。
组件默认配置:/js/config/default-elements/*.js
。
容器默认配置:/js/config/default-containers/*.js
。
预设模块默认配置:/js/config/preset-modules/*.js
。
配置表校验方法:/js/config/validators/config.js
。
组件校验方法:/js/config/validators/elements/*.js
。
模块校验方法:/js/config/validators/modules/*.js
。
初始化
创建工作台后,在正式可交互前,会进入生命周期的不同阶段,关于各个声明周期中做了哪些工作,可以参考这个文档。
如果要快速理解工作台是如何初始化的话,大致是以下流程:
- 初始化Store,也就是vuex,会去获取配置表、校验配置表、组装配置表。
- 根据组装好的配置表,初始化Router。
- 根据组装好的配置表,初始化Viewmodel。
Store
主要分为以下几个模块:
- activity 活动相关数据(例:奖品配置)
- app 应用相关数据(例:屏幕尺寸,环境变量)
- user 用户相关数据(例:账户信息,积分配置)
Router
使用的是hash模式,然后route的path是页面的ID,例如基本设置页的ID为base,那么地址就是 /#bas,以此类推。
Plugin
- event-bus,已注入到Vue原型中,通过this.$bus可以访问到,主要用于事件通知。
- hw-icon,全局Vue组件,主要用于展示自定义icon(有可能是SVG,有可能是png之类的)
- hw-qrcode,已弃用,皆因目前二维码都是服务端返回的。
如何开发
添加一个组件需要做什么?
- 在
/src/js/config/default-elements/
目录下,添加组件的默认配置。(文件名称必须和组件的type完全一致。) - 在
/src/components/elements/
目录下,添加组件。 - 在
/src/js/view-model/element.js
中注册组件。 - 在
/src/js/config/validators/elements/
目录下,添加组件的校验方法。(非必须,文件名称必须和组件的type完全一致。)
添加一个预设模块需要做什么?
- 在
/src/js/config/preset-modules/
目录下,添加预设模块的默认配置。(文件名称必须与活动的配置表中的模块ID完全一致。) - 在
/src/js/config/validators/modules/
目录下,添加预设模块的校验方法。(非必须,文件名称必须和组件的type完全一致。)
添加一个模态框需要做什么?
- 在
/src/components/modals/
目录下,添加模态框。 - 在
/src/js/view-model/modals.js
中注册模态框。
添加一个数据接口需要做什么?
- 在
/src/config/*.js
中,添加接口描述。(url、type、错误提示信息等等) - 在
/src/js/store/actions/*.js
中,添加一个action。
如何在内网进行开发调试?
- 现在内网创建好一个活动,得到一个活动ID。
- 下载、安装好依赖后,执行
npm run dev
。 - 默认会打开
localhost:8080
,此时需要添加一个?game_id=xxx
,xxx为刚刚得到的活动ID。 - 开发、调试。
- 想换一个活动的话,就把game_id换成想要测试的活动就可以了。
如何部署?
- 当前项目中,执行
npm run build
。 - 当前项目中,复制
/dist/static
目录到/24haowan_front_webCustom/24haowan/workspace/
目录下,全覆盖。 - 当前项目中,复制
/dist/index.html
文件中的内容,到/24haowan_front_webCustom/24haowan/protected/views/webCustom/workbench2.php
中,全覆盖。 - 提交代码。
- 通过
test.24haowan.com/sync-code/
进行部署更新。