【Vue工程】009-Plop 代码生成器

【Vue工程】009-Plop 代码生成器

一、概述

1、简介

Plop 是一个用于生成代码文件可配置的脚手架工具。它可以帮助开发人员自动创建代码文件、模板和代码片段,从而提高开发效率。

Plop 的工作原理是通过定义称为 “生成器”(generators)的脚本来生成代码文件。每个生成器定义了一组操作和模板,用于生成特定类型的文件或代码片段。当你运行 Plop 命令时,它会根据你的选择执行相应的生成器,并根据模板和操作的定义创建文件。

2、官方文档

https://plopjs.com/documentation/

二、基本使用

1、安装

pnpm add plop -D

2、根目录创建 plopfile.js

module.exports = function (plop) {
  plop.setWelcomeMessage('请选择需要创建的模板:')
  plop.setGenerator('page', require('./plop-templates/page/prompt.cjs'))
  // 增加其他模板
  // plop.setGenerator('page1', require('./plop-templates/page1/prompt.cjs'))
  // plop.setGenerator('page2', require('./plop-templates/page2/prompt.cjs'))
}

3、创建 plop-templates 目录

模板文件:plop-templates/page/page.hbs

<template>
  <div></div>
</template>

<script lang="ts" setup>
// 一、引入
// 二、数据
// 三、逻辑
// 四、钩子
// 五、其他
</script>

<style lang="scss" scoped></style>

脚本文件:plop-templates/page/prompt.cjs

const fs = require('fs');

// 递归获取指定路径下的所有文件夹(目录)路径
function getFolder(path) {
  const components = [];
  const files = fs.readdirSync(path);
  files.forEach((item) => {
    const stat = fs.lstatSync(`${path}/${item}`);
    if (stat.isDirectory() === true) {
      components.push(`${path}/${item}`);
      components.push(...getFolder(`${path}/${item}`));
    }
  });
  return components;
}

module.exports = {
  // 描述
  description: '创建页面',
  // 提示列表
  prompts: [
    {
      type: 'list',
      name: 'path',
      message: '请选择创建目录',
      // 选择列表
      choices: getFolder('src/pages'),
    },
    {
      type: 'input',
      name: 'name',
      message: '请输入文件名',
      // 验证
      validate: (v) => {
        if (!v || v.trim === '') return '文件名不能为空';
        else return true;
      },
    },
  ],
  // 动作列表
  actions: (data) => {
    return [
      {
        // 操作类型
        type: 'add',
        // 生成文件目标位置
        path: `${data.path}/{{dotCase name}}.vue`,
        // 模板文件位置
        templateFile: 'plop-templates/page/page.hbs',
      },
    ];
  },
};

4、package.json 增加脚本

"new": "plop"

5、使用

D:\MySoft\Environment\nodejs\npm.cmd run new

> my-vue-ts@0.0.0 new
> plop

? 请选择创建目录 src/pages/chat/ai
? 请输入文件名 chatgpt
√  ++ \src\pages\chat\ai\chatgpt.vue
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种流行的JavaScript框架,用于构建用户界面。它采用了组件化的开发方式,使得开发者可以将页面拆分成多个独立的组件,每个组件负责自己的逻辑和样式。Vue具有简洁易学的语法和高效的性能,因此在前端开发中得到了广泛应用。 Vue-grid-layout是Vue的一个插件,用于实现网格布局。它提供了一个可拖拽和可调整大小的网格系统,使得开发者可以轻松地创建灵活的布局。通过使用vue-grid-layout,开发者可以将页面元素按照网格的形式进行排列,并且可以通过拖拽和调整大小来改变元素的位置和尺寸。 以下是一个简单的示例代码,展示了如何在Vue中使用vue-grid-layout: ```html <template> <div> <vue-grid-layout :layout="layout" :col-num="12" :row-height="30" :is-draggable="true" :is-resizable="true"> <div v-for="item in layout" :key="item.i" :data-grid="item"> {{ item.i }} </div> </vue-grid-layout> </div> </template> <script> import VueGridLayout from 'vue-grid-layout'; export default { components: { VueGridLayout }, data() { return { layout: [ { x: 0, y: 0, w: 2, h: 2, i: '1' }, { x: 2, y: 0, w: 4, h: 2, i: '2' }, { x: 6, y: 0, w: 2, h: 4, i: '3' } ] }; } }; </script> ``` 在上面的代码中,我们首先导入了vue-grid-layout插件,并将其注册为Vue的组件。然后,在模板中使用`vue-grid-layout`标签来创建一个网格布局容器。通过设置不同的属性,我们可以定义网格的列数、行高、是否可拖拽和调整大小等。在`vue-grid-layout`标签内部,我们使用`v-for`指令来遍历`layout`数组,并将每个元素渲染为一个网格项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值