# 编写定制物料
AMS里面把区块(block)和字段(field)统称为物料
默认你已经安装cli工具,如果还没安装请移步cli工具
# 定制工作区目录结构
.
└── packages
├── field-test(定制field)
│ ├── lib(打包发布目录)
│ └── src
│ ├── edit.vue
│ ├── view.vue
│ ├── package.json
│ └── index.js(模块入口)
└── block-haha(定制block)
├── lib(打包发布目录)
└── src
├── block.vue
├── package.json
└── index.js(模块入口)
# 新建定制field
通过ams field
可以创建field
field命名规范
如果是业务相关定制模块如 warehouse
,需要增加前缀 vip-
变成 vip-warehouse
通用模块不需要增加前缀,如 editor
cli工具会校验本地是否已有同名field或者npm是否已有同名field
我们可以看到 packages
目录下会新增一个 field-test
目录,同时 field-test/package.json
会有一项amsConfig
的配置
{
"name": "@ams-team/block-test",
"version": "1.0.0",
"amsConfig": {
"externals": {
"vuedraggable": "vuedraggable"
}
}
}
其它可用配置项
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
version | string | 是 | 无 | 模块版本号,以此配置为准,会覆盖package.json内的version |
publish | boolean | 否 | true | 是否发布 |
externals | string | object | 否 | '' | 排除打包模块,详见webpack-externals (opens new window) |
每个field
会有编辑(edit
) 和 显示 (view
) 两种状态,对应 field-test/src/edit.vue
和 field-test/src/view.vue
两个文件
在 field-test
定制模块内部可以通过 @ams-team/ams
引用 ams
暴露的ams.utils
和 ams.mixins
等
mixins
详见 ams.mixins
// field-test/src/view.vue
import ams from '@ams-team/ams';
export default {
mixins: [ams.mixins.fieldViewMixin],
computed: {
dateString() {
return ams.utils.parseTime(this.value)
}
}
}
编辑状态下,由于 value
是通过 prop
传入的不能通过 v-model
绑定,如果是使用v-model绑定要使用 localValue
, ams.mixins.fieldEditMixin
会同步 value
和 localValue
,并同步更新block对应数据项
v-bind="field.props"
会将field的props配置透传至节点
mixins
详见 ams.mixins
// field-test/src/edit.vue
<template>
<el-date-picker v-model="localValue"
type="date"
v-bind="field.props" />
</template>
<script>
import ams from '@ams-team/ams';
export default {
mixins: [ams.mixins.fieldEditMixin, ams.mixins.fieldDateGetSetMixin]
}
</script>
# 新建定制block
通过 ams block
可以创建block
block命名规范
如果是业务相关定制模块如 warehouse
,需要增加前缀 vip-
变成 vip-warehouse
通用模块不需要增加前缀,如 editor
其它方面和配置类似于上面 ams field
命令
# 定制模块本地调试预览
在 定制工作区
内运行 npm run dev
启动预览调试,通过 http://localhost:9527/ 查看
# 发布定制模块
通过 ams publish
可以发布所有定制模块,通过 ams publish field-test
可以发布单一定制模块
cli工具会跳过 amsConfig
配置的 publish
为 false
或者是线上版本号大于等于当前版本号的模块,如需要发布新版本请修改 package.json
内的 version
配置
# 可用定制模块列表
npm模块列表 (opens new window) 内带 @ams-team
scope的模块