欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項目優(yōu)雅實現(xiàn)自動引入組件的方法詳解

 更新時間:2023年09月13日 10:00:00   作者:iceCode  
在我們寫vue項目的時候,都會引入一些組件庫,有時候有可能還不止一個組件庫,那么如何優(yōu)雅的實現(xiàn)自動引入組件呢,下面小編就來和大家詳細講講吧

前言

在我們寫vue項目的時候,都會引入一些組件庫,有時候有可能還不止一個組件庫,這樣會使我們的項目打包之后特別龐大,再或者在組件內(nèi)使用大量的import引入所使用的組件,讓其打包之后的項目不那么龐大,不論哪一種對開發(fā)者都不太友好。

接下來分享幾個插件,讓組件中使用較少的import或者不使用import就能按需引入組件供我們使用

  • unplugin-vue-components: 自動按需因引入組件
  • vite-plugin-style-import:自動引入樣式
  • unplugin-auto-import:自動引入api
  • unplugin-icons:自動引入圖標

安裝的話應(yīng)該都會 :

//直接npm i 梭哈
npm i unplugin-vue-components unplugin-auto-import vite-plugin-style-import unplugin-icons

unplugin-vue-components

安裝完成之后,在vite.confing.ts引入即可,在這里使用的element-plus組件庫

//vite.confing.ts 
import Components from "unplugin-vue-components/vite";
//引入餓了么的組件,只要安裝的ep,這里就會有提示的
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
export default defineConfig({
  plugins: [
  //...
    Components({
      dts: "./src/components.d.ts",//創(chuàng)建ts文件
      extensions:['vue'],//指定文件的后綴
      dirs: ["src/components/"],//指定路徑,自動導(dǎo)入自定義組件
      resolvers: [ElementPlusResolver()],//指定自動引入的組件庫,也就是從插件中導(dǎo)出的那個
    }),
   ],
});

這樣簡單的配置就完成了,這個時候我們在組件里面就可以為所欲為的使用組件了

app.vue

<template>
  <div>
    <el-button @click="btn">點擊</el-button>
    <!-- 在插件內(nèi),指定的路徑下,也可以直接使用自定義組件 -->
    <HelloWorld/>
  </div>
</template>
<script setup lang="ts">
const btn = () => {
  ElMessage.error("iceCode");
};
</script>

vite-plugin-style-import

當然有時候,不是所有的組件都自帶樣式的,就例如antdv中的message提示組件,這個是需要單獨引入樣式的

這里就可以使用vite-plugin-style-import來對樣式的自動導(dǎo)入了

 vite.confing.ts

import { createStyleImportPlugin, AndDesignVueResolve} from "vite-plugin-style-import";
//2.0之前
//import styleImport { AndDesignVueResolve} from "vite-plugin-style-import";
export default defineConfig({
  plugins: [
  //...
    createStyleImportPlugin({
      resolves: [AndDesignVueResolve()],//這里引入
    }),
     //下面這種寫法使在這個插件2.0之前的寫法
    // styleImport( {
    //   libs: [
    //     {
    //       libraryName: "ant-design-vue",
    //       esModule: true,
    //       resolveStyle: (name: string) => {
    //         return `ant-design-vue/dist/antd.css`;
    //       },
    //     },
    //   ],
    // })
   ],
});

這個時候我們再使用antdv的message組件無需引入樣式也可以正常展示了

app.vue

<template>
  <div>
    <Button @click="btn">點擊</Button>
  </div>
</template>
<script setup lang="ts">
import { Button, message } from "ant-design-vue";
const btn = () => {
  message.success("iceCode");
};
</script>

unplugin-auto-import

在vue3選項式中,我們需要大量使用import引入vue的api,unplugin-auto-import可以使我們在寫vue的時候不用再引入ref,reactive等api了,減少了我們頻繁寫import的次數(shù)

vite.confing.ts

import AutoImport from "unplugin-auto-import/vite"; //引入組件
export default defineConfig({
  plugins: [
   ///...
   AutoImport({
      imports: ["vue", "vue-router", "pinia", "@vueuse/core"],//這里是自動引入api的項目
      dts: "./src/auto-imports.d.ts",//在這創(chuàng)建.d.ts文件
      resolvers: [ ElementPlusResolver()],//組件中的api也是可以自動引入的,比如message是需要單獨引入的
    }),
   ],
});

這樣,我們再在vue3中進行一些操作的時候就無需再引入api了

app.vue

<script setup lang="ts">
const num = ref<number>(0);
const newNum = computed<number>( () => num.value + 1 );
interface n{
  n:number
}
const numObj = reactive<n>({
  n: newNum.value,
});
console.log(toRaw(numObj));
</script>

unplugin-icons

如果項目中需要大量引入圖標的時候,又不想手動引入,就可以使用unplugin-icons來進行自動引入

vite.confing.ts

//自動引入圖標需要搭配自動引入組件的插件來用
import Components from "unplugin-vue-components/vite";
import Icons from "unplugin-icons/vite";
import IconsResolve from "unplugin-icons/resolver";
export default defineConfig({
  plugins: [
  //...
    Components({
      dts: "./src/components.d.ts",//創(chuàng)建ts文件
      extensions:['vue'],//指定文件的后綴
      dirs: ["src/components/"],//指定路徑,自動導(dǎo)入自定義組件
      resolvers: [IconsResolve()],//圖標組件
     // { enabledCollections: ['ep'], },有的會在IconsResolve()中傳入這個參數(shù),但我測試不傳也是可以的
    }),
      Icons({
      //使用哪種框架解析
      compiler: "vue3",
      //是否自動安裝
      autoInstall: true,
    }),
   ],
});

使用的時候也是有點特殊

<template>
  <div>
  <!-- 這是餓了么組件的icon使用,需要加上i-ep- 才能正常使用 -->
    <i-ep-user/>
  </div>
</template>

這個自動引入icon的插件,如果不是項目中需要大量使用圖標,也不太推薦使用,使用的地方不太多,加入這個插件之后,會使打包的體積變大

整體代碼

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import Components from "unplugin-vue-components/vite";
import AutoImport from "unplugin-auto-import/vite";
import Icons from "unplugin-icons/vite";
import IconsResolve from "unplugin-icons/resolver";
import { AntDesignVueResolver, ElementPlusResolver } from "unplugin-vue-components/resolvers";
import { createStyleImportPlugin, AndDesignVueResolve, ElementPlusResolve } from "vite-plugin-style-import";
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    //自動引入api
    AutoImport({
      imports: ["vue", "vue-router", "pinia", "@vueuse/core"],
      dts: "./src/auto-imports.d.ts",
      resolvers: [AntDesignVueResolver(), ElementPlusResolver()],
    } ),
    //自動引入組件
    Components({
      dts: "./src/components.d.ts",
      extensions: ["vue"],
      dirs: ["src/components/"],
      resolvers: [
        AntDesignVueResolver({
          importStyle: false, // css in js
        }),
        ElementPlusResolver(),
        IconsResolve(),
      ],
    } ),
    // 自動引入樣式
    createStyleImportPlugin({
      resolves: [AndDesignVueResolve(), ElementPlusResolve()],
    } ),
    //自動引入icon
    Icons({
      //使用哪種框架解析
      compiler: "vue3",
      //是否自動安裝
      autoInstall: true,
    }),
  ],
});

結(jié)尾

在自動引入組件和自動引入api中會發(fā)現(xiàn)有一個創(chuàng)建ts文件的屬性,如果是使用的ts項目,務(wù)必要寫,因為會使ts報錯,默認情況下這兩個插件會在根目錄下創(chuàng)建好.d.ts文件,但是我們的項目文件都在src目錄下,即使根目錄下有著ts文件,卻訪問不到,這里就是主動在src目錄下添加對應(yīng)的.d.ts文件,防止自動引入之后ts不知道,給我們報錯!

以上就是vue項目優(yōu)雅實現(xiàn)自動引入組件的方法詳解的詳細內(nèi)容,更多關(guān)于vue引入組件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用vue3搭建后臺系統(tǒng)的詳細步驟

    使用vue3搭建后臺系統(tǒng)的詳細步驟

    這篇文章主要介紹了使用vue3搭建后臺系統(tǒng)的過程記錄,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Vue 2源碼解讀$mount函數(shù)原理

    Vue 2源碼解讀$mount函數(shù)原理

    這篇文章主要為大家介紹了Vue 2源碼解讀$mount原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 用vue設(shè)計一個日歷表

    用vue設(shè)計一個日歷表

    這篇文章主要介紹了如何用vue設(shè)計一個日歷表,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-12-12
  • 詳解在vue-cli中使用路由

    詳解在vue-cli中使用路由

    本篇文章主要介紹了詳解在vue-cli中使用路由,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue 如何實現(xiàn)表單校驗

    vue 如何實現(xiàn)表單校驗

    這篇文章主要介紹的是vue 如何實現(xiàn)表單校驗的方法,又代碼詳細解說,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 基于Vue+element-ui 的Table二次封裝的實現(xiàn)

    基于Vue+element-ui 的Table二次封裝的實現(xiàn)

    這篇文章主要介紹了基于Vue+element-ui 的Table二次封裝的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue中useVModel()的使用方法(通俗易懂)

    vue中useVModel()的使用方法(通俗易懂)

    useVModel()用來實現(xiàn)父子組件間數(shù)據(jù)的雙向綁定,若不想使用默認回調(diào),也可以自己使用emit實現(xiàn)回調(diào),這篇文章主要給大家介紹了關(guān)于vue中useVModel()使用方法的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • vue3中如何使用live2D

    vue3中如何使用live2D

    本文介紹了如何在Vue3項目中整合Live2D技術(shù),從Live2D的基本介紹到在Vue3中的具體實現(xiàn)方法,Live2D技術(shù)允許開發(fā)者將二維圖像轉(zhuǎn)化為可動畫的三維模型,主要應(yīng)用于游戲、虛擬角色等領(lǐng)域,文章詳細說明了在vue3項目中使用Live2D的步驟,感興趣的朋友一起看看吧
    2024-10-10
  • Vue3組合式函數(shù)Composable實戰(zhàn)ref和unref使用

    Vue3組合式函數(shù)Composable實戰(zhàn)ref和unref使用

    這篇文章主要為大家介紹了Vue3組合式函數(shù)Composable實戰(zhàn)ref和unref使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue中.prettierrc文件的常見配置(淺顯易懂)

    Vue中.prettierrc文件的常見配置(淺顯易懂)

    這篇文章主要介紹了Vue中.prettierrc文件的常見配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論