简单介绍一下:Micro-generator framework that makes it easy for an entire team to create files with a level of uniformity.
翻译一下:plop就是一款小而精美的生成器框架,使得团队可以轻松地创建统一的文件。
通过yarn add plop --Dev安装好这个包
然后在项目的根目录touch plop.js 生成这个文件在package.json添加"plop": "plop --plopfile ./plop.js"
企业管理后台,很多crud页面,如果每次都手动复制,那太恶心了。
当然可以使用cp -r,但是无法定制一些数据,替换模板,而且复制完还要改里面文件的变量的名字,浪费时间,不然介绍这款框架就没意义了。
关键代码:
plop.setGenerator('controller', {
description: 'application controller logic',
prompts: [
{
type: 'list', // 有很多类型可供参考,比如input,list,rawList等
name: 'templateType',
choices: [
{
name: '标准增删改查页面',
value: 'crud-page',
short: 'crud-page',
}
],
message: 'choose page type which you want to generate'
},
]
});
- description,就是显示在控制台的描述
- prompts,跟用户发生交互的列表,
- actions,用户选择后触发的动作
给大家看看效果:

就是根据用户的选择,然后执行接下来的actions
actions有两种方式,一种是把actions定义成方法,另外一种是把actions定义成数组,因为管理后台有些比较个性化的需求,所以我这边使用了第一种,如下:

关于actions的type,也支持很多类型,分别有
- add
- addMany
- modify
- append
- 你自定义的action
具体的每一种类型对应的具体参数,怕篇幅太长,就不一一罗列了,可以参考一下官方文档plop
上图中的双花括号是plop本身会替换掉的,会把命名自动转换成对应的格式,如下:
- camelCase: changeFormatToThis
- snakeCase: change_format_to_this
- dashCase/kebabCase: change-format-to-this
- dotCase: change.format.to.this
- pathCase: change/format/to/this
- properCase/pascalCase: ChangeFormatToThis
- lowerCase: change format to this
- sentenceCase: Change format to this,
- constantCase: CHANGE_FORMAT_TO_THIS
- titleCase: Change Format To This
更骚的是,它还能透传到读取的模版文件中,为自动生成页面提供更便捷的方法。
一般来说,简单的crud页面会有:
- 头部查询条件栏,很多查询条件,比如下啦选择,输入,日期选择等
- 表格部分,展示数据
- footer 分页器或者其它
- 对话框,表格可能需要修改数据,修改需要弹弹窗进行数据回显与修改
基于以上,得出一个文件夹模板

有了kebabCase就能规范html和vue的命名了

有了这个,可以最大程度的发挥自己的脑洞,想想自己平时做的很多重复的工作,最后都可以整合到这个文件夹,最后一键yarn plop生成所有文件,释放双手,剩下的就是填写接口地址,接口字段等。
最后生成的结果:

我这,算是青铜时代吗。。,总之,节省了我一半的时间,很舒服。。。