Vue自动生成组件示例总结

 更新时间:2023年12月23日 09:44:36   作者:林恒  
在Vue中,我们可以使用unplugin-generate-component-name插件自动基于目录名称生成组件名称,这个插件使得在大型代码库中找到和管理组件更加容易和直观,这篇文章主要介绍了Vue自动生成组件示例总结,需要的朋友可以参考下

unplugin-generate-component-name一款用于以文件夹名或者setup标签写入名字来自动生成Vue组件名的插件。

项目地址

功能

  • 💚 支持 Vue 3 开箱即用。
  • ⚡️ 支持 Vite、Webpack、Rspack、Vue CLI、Rollup、esbuild 等,由 unplugin 提供支持。
  • 🪐 支持文件夹名称和 Setup extend 两种模式。
  • 🦾 完全支持 TypeScript。

安装

# Yarn
$ yarn add unplugin-generate-component-name -D
# pnpm
$ pnpm i unplugin-generate-component-name -D

Vite 配置

// vite.config.ts
import GenerateComponentName from 'unplugin-generate-component-name/vite'
export default defineConfig({
  plugins: [
    GenerateComponentName({ /* options */ }),
  ],
})

Rollup 配置

// rollup.config.js
import GenerateComponentName from 'unplugin-generate-component-name/rollup'
export default {
  plugins: [
    GenerateComponentName({ /* options */ }),
  ],
}

Webpack 配置

// webpack.config.js
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-generate-component-name/webpack').default({ /* options */ }),
  ],
}

使用方法(开箱即用)

文件夹名称

你可以使用index组件所在的文件夹名作为组件的名字。

自动生成 Vue 组件名称

在Vue中,我们可以使用unplugin-generate-component-name插件自动基于目录名称生成组件名称。这个插件使得在大型代码库中找到和管理组件更加容易和直观。例如,假设我们有一个Vue组件名为Index.vue,此组件在Home目录中。通过unplugin-generate-component-name插件,此组件会自动命名为Home

src/home/
├── index.vue // 组件名称是 Home
├── about.vue
└── users/
    ├── index.vue // 组件名称是 Users
    └── info.vue

Setup Extend

<script setup>标签中,我们设置了 name 属性为 "Home"。这显式地将组件命名为 "Home",unplugin-generate-component-name插件会使用这个名字而不是 "Index"。

<template>
  <!-- 你的组件标记 -->
</template>
<script setup name="Home">
  // 你的脚本逻辑
</script>
<style>
  <!-- 你的组件样式 -->
</style>

选项

type GenComponentName = (opt: {
    filePath: string;
    dirname: string;
    originalName: string;
    attrName: string | undefined;
}) => string;
interface PattenOptions {
    include?: string | RegExp | (string | RegExp)[];
    exclude?: string | RegExp | (string | RegExp)[];
    genComponentName: GenComponentName;
}
interface Options extends Omit<PattenOptions, 'genComponentName'> {
    enter?: PattenOptions[];
}

include

include选项能够明确说明哪些文件应被包含在组件名称的自动创建过程中。

exclude

exclude选项则用于指明哪些文件应排除在组件名称的自动创建过程之外。

enter

Options接口中,有一个enter选项。enter是一个数组,该数组中每个对象都被视作一种特定的规则用于处理不同的文件路径。

每一种规则都可以包含includeexclude选项,用以指明哪些文件是应特别对待的。你也可以要求对genComponentName函数进行特定的设置,以达到自定义组件名称生成的效果。

下面是一个例子:

// vite.config.ts
import GenerateComponentName from 'unplugin-generate-component-name/vite'
export default defineConfig({
  plugins: [
     GenerateComponentName({
      include: ['**/*.vue'],
      enter: [{
        include: ["**/*index.vue"],
        genComponentName: ({ attrName, dirname }) => attrName ?? dirname
      }, {
        exclude: ['**/*.index.vue'],
        include: ["src/components/**/*.vue"],
        genComponentName: ({ dirname, originalName }) => `${dirname}-${originalName}`
      }]
    }),
  ],
});

在这个例子中,unplugin-generate-component-name插件被配置为处理所有的 .vue 文件。在enter选项中有两个对象适用于不同的文件路径:

  • 第一个对象覆盖所有以"index.vue"结尾的文件。genComponentName函数返回组件名称。如果script setup 标签中已经指定了名称,那么优先级将会很高; 如果没有,文件夹名称(dirname)就将会使用。
  • 第二个对象排除了所有以"index.vue"结尾的文件, 仅包括"src/components/"目录下的.vue文件。genComponentName函数用来以${dirname}-${originalName}的格式生成组件名。例如,对于一个名为src/component/Button中的MyButton.vue文件,它将会是Button-MyButton

到此这篇关于Vue自动生成组件名 的文章就介绍到这了,更多相关Vue自动生成组件名 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue项目中new Vue()和export default{}的区别说明

    Vue项目中new Vue()和export default{}的区别说明

    这篇文章主要介绍了Vue项目中new Vue()和export default{}的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue实现移动端弹出键盘功能(防止页面fixed布局错乱)

    vue实现移动端弹出键盘功能(防止页面fixed布局错乱)

    这篇文章主要介绍了vue 解决移动端弹出键盘导致页面fixed布局错乱的问题,通过实例代码给大家分享解决方案,对vue 移动端弹出键盘相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • vscode jsconfig.json 使用简介

    vscode jsconfig.json 使用简介

    通过jsconfig.json文件定义一个JavaScript项目,目录中是否存在此类文件表示该目录是JavaScript项目的根目录,文件本身可以选择列出属于项目的文件,要从项目中排除的文件以及编译器选项,这篇文章主要介绍了vscode jsconfig.json 使用说明,需要的朋友可以参考下
    2023-09-09
  • 前端低代码form-generator实现及新增自定义组件详解

    前端低代码form-generator实现及新增自定义组件详解

    这篇文章主要给大家介绍了关于前端低代码form-generator实现及新增自定义组件的相关资料,form-generator是一个开源的表单生成器,可以帮助我们快速构建各种表单页面,需要的朋友可以参考下
    2023-11-11
  • Vue中的情侣属性$dispatch和$broadcast详解

    Vue中的情侣属性$dispatch和$broadcast详解

    这篇文章主要给大家介绍了关于Vue中情侣属性$dispatch和$broadcast的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • vue 实现单选框设置默认选中值

    vue 实现单选框设置默认选中值

    今天小编就为大家分享一篇vue 实现单选框设置默认选中值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue中的@click.native 原生点击事件

    vue中的@click.native 原生点击事件

    这篇文章主要介绍了vue中的@click.native 原生点击事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue +elementui 项目登录通过不同账号切换侧边栏菜单的颜色

    vue +elementui 项目登录通过不同账号切换侧边栏菜单的颜色

    这篇文章主要介绍了vue +elementui 项目登录通过不同账号切换侧边栏菜单的颜色,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 详解如何在Vue2中实现useDraggable

    详解如何在Vue2中实现useDraggable

    这篇文章主要为大家详细介绍了Vue2中实现useDraggable的相关知识,文中的示例代码简洁易懂,对我们深入了解vue有一定的帮助,需要的小伙伴可以参考下
    2023-12-12
  • vue如何使用window.open打开页面并拼接参数

    vue如何使用window.open打开页面并拼接参数

    这篇文章主要介绍了vue如何使用window.open打开页面并拼接参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论