编写定制物料

AMS里面把区块(block)和字段(field)统称为物料

默认你已经安装cli工具,如果还没安装请移步cli工具

初始化定制工作区

定制物料的新建、本地开发调试、发布都需要在定制工作区内,如果是全部定制需要手动创建一个空的 packages 目录

定制工作区目录结构

  1. .
  2. └── packages
  3. ├── field-test(定制field
  4. ├── lib(打包发布目录)
  5. └── src
  6. ├── edit.vue
  7. ├── view.vue
  8. ├── package.json
  9. └── index.js(模块入口)
  10. └── block-haha(定制block
  11. ├── lib(打包发布目录)
  12. └── src
  13. ├── block.vue
  14. ├── package.json
  15. └── index.js(模块入口)

新建定制field

通过ams field可以创建field

cli-field

field命名规范

如果是业务相关定制模块如 warehouse,需要增加前缀 vip- 变成 vip-warehouse

通用模块不需要增加前缀,如 editor

cli工具会校验本地是否已有同名field或者npm是否已有同名field

cli-field-check

我们可以看到 packages 目录下会新增一个 field-test 目录,同时 field-test/package.json 会有一项amsConfig的配置

  1. {
  2. "name": "@ams-team/block-test",
  3. "version": "1.0.0",
  4. "amsConfig": {
  5. "externals": {
  6. "vuedraggable": "vuedraggable"
  7. }
  8. }
  9. }

其它可用配置项

参数类型是否必填默认值说明
versionstring模块版本号,以此配置为准,会覆盖package.json内的version
publishbooleantrue是否发布
externalsstring | object''排除打包模块,详见webpack-externals编写定制物料 - 图3

每个field会有编辑(edit) 和 显示 (view) 两种状态,对应 field-test/src/edit.vuefield-test/src/view.vue 两个文件

field-test 定制模块内部可以通过 @ams-team/ams 引用 ams 暴露的ams.utilsams.mixins

mixins 详见 ams.mixins

  1. // field-test/src/view.vue
  2. import ams from '@ams-team/ams';
  3. export default {
  4. mixins: [ams.mixins.fieldViewMixin],
  5. computed: {
  6. dateString() {
  7. return ams.utils.parseTime(this.value)
  8. }
  9. }
  10. }

编辑状态下,由于 value 是通过 prop 传入的不能通过 v-model 绑定,如果是使用v-model绑定要使用 localValueams.mixins.fieldEditMixin 会同步 valuelocalValue,并同步更新block对应数据项

v-bind="field.props" 会将field的props配置透传至节点

mixins 详见 ams.mixins

  1. // field-test/src/edit.vue
  2. <template>
  3. <el-date-picker v-model="localValue"
  4. type="date"
  5. v-bind="field.props" />
  6. </template>
  7. <script>
  8. import ams from '@ams-team/ams';
  9. export default {
  10. mixins: [ams.mixins.fieldEditMixin, ams.mixins.fieldDateGetSetMixin]
  11. }
  12. </script>

新建定制block

通过 ams block 可以创建block

cli-block

block命名规范

如果是业务相关定制模块如 warehouse,需要增加前缀 vip- 变成 vip-warehouse

通用模块不需要增加前缀,如 editor

其它方面和配置类似于上面 ams field 命令

定制模块本地调试预览

定制工作区 内运行 npm run dev 启动预览调试,通过 http://localhost:9527/ 查看

发布定制模块

通过 ams publish 可以发布所有定制模块,通过 ams publish field-test 可以发布单一定制模块

cli-publish

cli工具会跳过 amsConfig 配置的 publishfalse 或者是线上版本号大于等于当前版本号的模块,如需要发布新版本请修改 package.json 内的 version 配置

可用定制模块列表

npm模块列表编写定制物料 - 图6 内带 @ams-team scope的模块