最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 无星的前端之旅(十四)——巧用plop生成模板偷懒

    正文概述 掘金(XingXiaoWu)   2021-01-13   668

    背景

    在开发过程中,总会有一些模板代码需要编写,比如我是写vue的,vue2中的各种namespace,vue3中的各种引入。几乎是每个vue文件都需要的。

    每次写都累的一批,也毫无技术含量。纯体力活,但还不得不做。

    这时候大伙可能会用各自习惯的编辑器去编写各式各样的代码块来减轻工作量。

    但是团队中编辑器并非统一的,众所周知,前端不仅语言众多,开发工具也多的一批,也没有什么好的跨编辑器跨机子的代码块存储方式(大厂统一云编辑器的往后稍稍,不包含你们)

    这个时候就发现了plop(在跟着花裤衩手摸手学习vue-element-admin的时候学到的)。

    Plop解决了什么问题?

    解决了上述的同一个项目跨编辑器跨机器编写前端代码块的问题。

    如何集成

    一、集成plop到项目中

    npm i plop -D
    

    二、根目录下新建一个文件夹放置模板和脚本命令(这里只举个例子)

    <!-- plop-templates/views/index.hbs -->
    
    {{#if template}}
    <template>
      <div class="{{lowerCase name}}-main">
        {{ properCase name }}
      </div>
    </template>
    {{/if}}
    {{#if script}}
    <script>
    export default {
      name: '{{ properCase name }}',
      components: {
      },
      props: {
      },
      data: () => ({
      }),
      computed: {},
      watch: {},
      created() {},
      mounted() {},
      beforeCreate() {}, // 生命周期 - 创建之前
      beforeMount() {}, // 生命周期 - 挂载之前
      beforeUpdate() {}, // 生命周期 - 更新之前
      updated() {}, // 生命周期 - 更新之后
      beforeDestroy() {}, // 生命周期 - 销毁之前
      destroyed() {}, // 生命周期 - 销毁完成
      activated() {},
      methods: {},
    };
    </script>
    {{/if}}
    {{#if style}}
    <style lang="less" scoped>
    .{{lowerCase name}}-main{
    }
    </style>
    {{/if}}
    
    // plop-templates/views/prompt.js
    const { notEmpty } = require('../utils.js');
    module.exports = {
      description: '新建一个页面',
      prompts: [{
        type: 'input',
        name: 'name',
        message: '页面名称',
        validate: notEmpty('name'),
      },
      {
        type: 'checkbox',
        name: 'blocks',
        message: '需要包含什么:',
        choices: [{
          name: '<template>',
          value: 'template',
          checked: true,
        },
        {
          name: '<script>',
          value: 'script',
          checked: true,
        },
        {
          name: 'style',
          value: 'style',
          checked: true,
        },
        ],
        validate(value) {
          if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
            return ' <template> 和 <script> 是必须的.';
          }
          return true;
        },
      },
      ],
      actions: (data) => {
        const name = '{{properCase name}}';
        const actions = [{
          type: 'add',
          path: `src/views/${name}/index.vue`,
          templateFile: 'plop-templates/view/index.hbs',
          data: {
            name,
            template: data.blocks.includes('template'),
            script: data.blocks.includes('script'),
            style: data.blocks.includes('style'),
          },
        }];
        return actions;
      },
    };
    

    目录结构如图

    无星的前端之旅(十四)——巧用plop生成模板偷懒

    三、根目录创建plop.js

    这个是plop会读取的配置文件

    // plopfile.js
    const viewGenerator = require('./plop-templates/view/prompt');
    const componentGenerator = require('./plop-templates/component/prompt');
    const storeGenerator = require('./plop-templates/store/prompt');
    module.exports = (plop) => {
      plop.setGenerator('view', viewGenerator);
      plop.setGenerator('component', componentGenerator);
      plop.setGenerator('store', storeGenerator);
    };
    

    四、如何添加命令方便使用

    在package.json 添加 script脚本

    {
      "scripts": {
        "new": "plop"
      },
    }
    

    五、如何使用

    npm run new
    

    效果图

    无星的前端之旅(十四)——巧用plop生成模板偷懒

    最后

    我提供两套我自己使用的模板,分别是vue2和vue3的

    vue2.zip

    vue3.zip

    注意:store是采用了module是分开自注册的,如果有兴趣,可以看这篇 无星的前端之旅(十三)——require.context和vuex持久化


    起源地下载网 » 无星的前端之旅(十四)——巧用plop生成模板偷懒

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元