Vue自動生成組件示例總結(jié)
unplugin-generate-component-name一款用于以文件夾名或者setup標(biāo)簽寫入名字來自動生成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插件自動基于目錄名稱生成組件名稱。這個插件使得在大型代碼庫中找到和管理組件更加容易和直觀。例如,假設(shè)我們有一個Vue組件名為Index.vue,此組件在Home目錄中。通過unplugin-generate-component-name插件,此組件會自動命名為Home。
src/home/
├── index.vue // 組件名稱是 Home
├── about.vue
└── users/
├── index.vue // 組件名稱是 Users
└── info.vueSetup Extend
在<script setup>標(biāo)簽中,我們設(shè)置了 name 屬性為 "Home"。這顯式地將組件命名為 "Home",unplugin-generate-component-name插件會使用這個名字而不是 "Index"。
<template> <!-- 你的組件標(biāo)記 --> </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選項能夠明確說明哪些文件應(yīng)被包含在組件名稱的自動創(chuàng)建過程中。
exclude
exclude選項則用于指明哪些文件應(yīng)排除在組件名稱的自動創(chuàng)建過程之外。
enter
在Options接口中,有一個enter選項。enter是一個數(shù)組,該數(shù)組中每個對象都被視作一種特定的規(guī)則用于處理不同的文件路徑。
每一種規(guī)則都可以包含include和exclude選項,用以指明哪些文件是應(yīng)特別對待的。你也可以要求對genComponentName函數(shù)進(jìn)行特定的設(shè)置,以達(dá)到自定義組件名稱生成的效果。
下面是一個例子:
// 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"結(jié)尾的文件。genComponentName函數(shù)返回組件名稱。如果script setup 標(biāo)簽中已經(jīng)指定了名稱,那么優(yōu)先級將會很高; 如果沒有,文件夾名稱(dirname)就將會使用。 - 第二個對象排除了所有以
"index.vue"結(jié)尾的文件, 僅包括"src/components/"目錄下的.vue文件。genComponentName函數(shù)用來以${dirname}-${originalName}的格式生成組件名。例如,對于一個名為src/component/Button中的MyButton.vue文件,它將會是Button-MyButton。
到此這篇關(guān)于Vue自動生成組件名 的文章就介紹到這了,更多相關(guān)Vue自動生成組件名 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入學(xué)習(xí)Vue nextTick的用法及原理
這篇文章主要介紹了深入學(xué)習(xí)Vue nextTick的用法及原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10
使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法
布局是中大型網(wǎng)站或應(yīng)用的基礎(chǔ),假設(shè)你正在創(chuàng)建一個網(wǎng)頁應(yīng)用,它包括主頁、營銷頁面和應(yīng)用頁面,你不會想要為每一頁重復(fù)所有的工作,對吧,與Nuxt不同,Vue 3并沒有內(nèi)置的布局系統(tǒng),但是別擔(dān)心,這里將向你展示3種簡單的方法來實現(xiàn)這一點,需要的朋友可以參考下2023-08-08
原生JS?Intersection?Observer?API實現(xiàn)懶加載
這篇文章主要為大家介紹了原生JS?Intersection?Observer?API實現(xiàn)懶加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
淺談VUE防抖與節(jié)流的最佳解決方案(函數(shù)式組件)
這篇文章主要介紹了淺談VUE防抖與節(jié)流的最佳解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

