成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不引用組件庫,就能使用它!怎么做到的?

開發 前端
最近看到了一個插件unplugin-vue-components,很好奇,他的作用是什么呢?我借一個小例子給大家說明。

最近看到了一個插件unplugin-vue-components,很好奇,他的作用是什么呢?我借一個小例子給大家說明。

我們平時在使用ant-design-vue這類的UI組件庫的時候,為了最后打包體積能小一些,都會采用按需加載的方式:

import { createApp } from "vue";
import { Button } from 'ant-design-vue'

import App from './App.vue'

const app = createApp(App)
// 按需加載
app.use(Button)

app.mount('#app')

接著我們就可以在頁面中去使用a-button了:

<template>
  <a-button @click="handleClick">哈哈哈</a-button>
</template>

手動按需加載

其實我們上面的例子,是手動按需加載,也就是,我們想用什么組件,就得注冊一遍,比如我想用這些組件,我就得一個一個去引用,去手動按需加載:

  • Input
  • Select
  • Form
import { createApp } from "vue";
import { Button, Input, Form, Select } from "ant-design-vue";

import App from "./App.vue";

const app = createApp(App);
// 手動按需加載
app.use(Button).use(Input).use(Form).use(Select);

app.mount("#app");

自動按需加載

那怎么才能自動去按需加載呢?這時候unplugin-vue-components就出場了,他可以讓你不用自己去引入,去按需加載,而是當你用到了,他會自動幫你加載這一個組件~

就比如我在頁面里使用了 ant-design-vue 的 button 組件,我并沒有在去手動引入加載,我們需要安裝這個插件,并進行配置。

注意:ant-design-vue 的樣式使用的是 css-in-js,所以不需要按需引入樣式,但是 element-ui 就需要,因為 element-ui 使用的是樣式文件去定義樣式:

// 安裝
pnpm i unplugin-vue-components

// vite.config.ts 配置

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import Components from "unplugin-vue-components/vite";
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
export default defineConfig({
  base: "./",
  plugins: [
    vue(),
    Components({
      // 生成類型聲明文件
      dts: true,
      resolvers: [
        AntDesignVueResolver({
          // 是否按需引入組件樣式
          importStyle: false,
        }),
      ],
    }),
  ],
});
import { createApp } from "vue";

import App from "./App.vue";

const app = createApp(App);

app.mount("#app");
<template>
  <a-button @click="handleClick">哈哈哈</a-button>
</template>

頁面會渲染出來。

類型提示

當我們使用unplugin-vue-components后,構建之后,它會幫我們生成一個類型聲明文件 components.d.ts,確保我們使用組件的時候,能有類型的提示:

這個聲明文件也是按需生成的,比如我使用了:

  • Input
  • Select
  • Form

他就會給我生成這三個組件的類型聲明:

想要用這個文件的類型聲明,我們需要在 tsconfig.ts 中配置一下:

基本原理

我們先來看看,我們在不適用任何組件庫、插件的情況下,Vue 會把 a-button解析成一個什么東西:

可以看到會被解析成_resolveComponent("a-button"),這個_resolveComponent你可以理解為是一個解析組件的方法,它會從全局去找有沒有這個 a-button 全局組件,有的話就渲染出來。

當我們配置了unplugin-vue-components + AntDesignVueResolver之后,我們再看看構建后的代碼長什么樣子:

我們可以看到,_resolveComponent被替換成了引入的 button 組件了,也就是當我們使用了AntDesignVueResolver之后,它會去幫我們匹配出 _resolveComponent調用的a-開頭的組件,并尋找組件庫中對應的組件,去在構建的時候去自動引入,達到按需引入的效果~

每一個組件庫的匹配規則都是不一樣的,我們可以看到unplugin-vue-components支持了這么多組件庫呢~

責任編輯:趙寧寧 來源: 前端之神
相關推薦

2022-08-15 12:31:32

Vue3TypeScript

2022-04-01 09:01:55

Dubbo接口系統

2013-08-02 13:30:02

蘋果保秘

2016-03-22 14:00:06

數據安全數據庫

2019-09-20 08:54:15

換膚網易云音樂QQ

2021-10-26 15:33:07

區塊鏈安全加密算法

2015-06-11 11:18:04

友盟精準推送

2020-02-09 16:18:45

Redis快 5 倍中間件

2023-02-06 17:38:34

低延遲

2024-10-09 17:27:27

2019-12-06 14:07:07

系統緩存架構

2019-10-29 06:03:44

RFID物聯網IOT

2019-01-07 17:17:27

設計直播創新

2020-09-02 14:10:02

機器學習人工智能計算機

2021-11-18 20:37:59

數字化

2011-08-15 21:42:57

Oracle數據庫不能使用索引

2023-02-10 08:00:00

數據庫列數據庫磁盤

2021-02-18 09:23:47

數據庫分區數據庫倉庫

2013-03-20 14:26:52

獨立開發者手機游戲手游
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产玖玖| 91精品国产91久久久久久密臀 | 日韩电影一区二区三区 | 成人影院在线观看 | 欧美激情国产日韩精品一区18 | 久久精品一二三影院 | 亚洲成人中文字幕 | 久久天天 | 欧美区日韩区 | 国产乱码久久久 | 欧美韩一区二区 | 黄色大全免费看 | 伊人久久免费 | 亚洲精品久久久久中文字幕欢迎你 | 久久久资源 | 日韩精品二区 | 成人片网址 | 成人免费在线观看 | 日韩久久成人 | 日日夜夜狠狠操 | 欧美99 | 日韩在线视频免费观看 | 青青草在线播放 | 亚洲视频一区在线播放 | 亚洲丝袜天堂 | 在线三级网址 | 欧美精品成人 | 自拍 亚洲 欧美 老师 丝袜 | 久久久久久亚洲精品 | 欧美日韩精品一区二区三区蜜桃 | 人人看人人爽 | 国产精品视频久久久 | 国产精品国产成人国产三级 | 国产精品高清一区二区 | 中文字幕在线人 | 国产视频中文字幕 | 国产一区 | www久久99| 国产高清在线精品 | 九色在线观看 | 久久精品亚洲欧美日韩精品中文字幕 |