最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3全局組件自動(dòng)注冊(cè)功能實(shí)現(xiàn)

 更新時(shí)間:2023年02月01日 15:45:45   作者:風(fēng)啞  
本文主要講述vue3的全局公共組件的自動(dòng)注冊(cè)功能,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

vue3全局組件自動(dòng)注冊(cè)

前言:

本文主要講述vue3的全局公共組件的自動(dòng)注冊(cè)

第一步:建文件

需要在src/components 下創(chuàng)建一個(gè)文件夾用于存放封裝的公共組件(這里我起名叫coms)

需要在src/components 下創(chuàng)建一個(gè)js文件用于存放引入組件并注冊(cè)(這里我起名叫Index.js)

第二步:寫函數(shù)

在coms中建文件夾,將組件放入這個(gè)文件夾,此文件夾的名字就是我們將要注冊(cè)組件的名字。

在Index.js中寫入以下工具函數(shù):

// 全局組件注冊(cè) 需要到coms這個(gè)目錄下注冊(cè)
 
export default {
    install(app) {
        const req = require.context('./coms', true, /\.vue$/);
        req.keys().forEach((item) => {
            const defaultObj = req(item).default;
 
            let name = item.split('/')[1];
            // console.log('name', name);
            app.component(name, defaultObj);
        });
    }
};

注意:這里我沒(méi)有用 defaultObj.__file 來(lái)取文件路徑,是因?yàn)樯a(chǎn)環(huán)境下__file屬性會(huì)被刪除,會(huì)導(dǎo)致如下報(bào)錯(cuò)

第三步:導(dǎo)入文件

在main.js中導(dǎo)入工具函數(shù)并掛載到app中

import coms from '@/components/Index'; //全局組件注冊(cè)
app.use(coms);

第四步:全局使用

到這一步就可以全局用我們定義好的文件名作為組件名了。

ps:vue2其實(shí)也大差不差,就是吧app.use()改成了 Vue.use()

最后感謝大佬的指導(dǎo) @一個(gè)好好的程序員

參考文獻(xiàn):

vue3全局組件注冊(cè)

補(bǔ)充: Vue3注冊(cè)全局組件

例如組件使用頻率非常高,幾乎每個(gè)頁(yè)面都在使用便可以封裝成全局組件

1.注冊(cè)單個(gè)全局組件

在main.ts 引入我們的組件跟隨在createApp(App) 后面 切記不能放到mount 后面這是一個(gè)鏈?zhǔn)秸{(diào)用用

其次調(diào)用 component 第一個(gè)參數(shù)組件名稱 第二個(gè)參數(shù)組件實(shí)例

import { createApp } from 'vue'
import App from './App.vue'
import './assets/css/reset/index.less'
import Card from './components/Card/index.vue'
createApp(App).component('Card',Card).mount('#app') 
//.component('Card',Card)就是注冊(cè)全局組件 (‘自定義鍵名',組件名)

使用方法

直接在其他vue頁(yè)面 立即使用即可 無(wú)需引入

<template>
 <Card></Card>
</template>

2.批量注冊(cè)全局組件

遇到要注冊(cè)很多個(gè)全局組件時(shí),可以定義中間件,讓中間件去完成組件注冊(cè),然后main.js再引入使用這個(gè)中間件

src/components中新建index.ts用來(lái)將所有需要全局注冊(cè)的組件導(dǎo)入

?: 如果使用的是 JS 可以刪除類型校驗(yàn)

import type { Component } from 'vue' //import type 是用來(lái)協(xié)助進(jìn)行類型檢查和聲明的,在運(yùn)行時(shí)是完全不存在的。

import SvgIcon from './SvgIcon/index.vue'

// ?如果使用的是 JS 可以刪除類型校驗(yàn)

const components: {

  [propName: string]: Component //字面量類型,每個(gè)屬性值類型為組件的類型

} = {

  SvgIcon

}

export default components

2. 在main.ts中導(dǎo)入

?這里使用循環(huán)的方式, 將每個(gè)全局組件進(jìn)行注冊(cè)

import { createApp } from 'vue'

import ElementPlus from 'element-plus'

import 'element-plus/dist/index.css' // 基于斷點(diǎn)的隱藏類 Element 額外提供了一系列類名,用于在某些條件下隱藏元素

import App from './App.vue'

import router from './router'

import { store, key } from './store'

import globalComponent from '@/components/index' //引入需要注冊(cè)的全部組件

const app = createApp(App)

app.use(store, key).use(router).use(ElementPlus)

// 注冊(cè)全局的組件 (對(duì)所有需要注冊(cè)的組件進(jìn)行遍歷并注冊(cè))

for (const componentItme in globalComponent) {

  app.component(componentItme, globalComponent[componentItme])

}

app.mount('#app') //需要注冊(cè)完組件后才掛載

3. 如果使用TS編寫,還需要在和main.ts同級(jí)的目錄, 創(chuàng)建一個(gè)components.d.ts, 用來(lái)處理組件引入報(bào)錯(cuò)的問(wèn)題和添加組件類型提示

import SvgIcon from '@/components/SvgIcon/index.vue'

//要擴(kuò)充@vue/runtime-core包的聲明

declare module '@vue/runtime-core' {

  export interface GlobalComponents { //這里擴(kuò)充"ComponentCustomProperties"接口

    SvgIcon: typeof SvgIcon

  }

}

4. 最后直接導(dǎo)入即可

到此這篇關(guān)于vue3全局組件自動(dòng)注冊(cè)功能實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue3全局組件自動(dòng)注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue?插槽?Slots源碼解析與用法詳解

    Vue?插槽?Slots源碼解析與用法詳解

    這篇文章主要介紹了Vue?插槽?(Slots)?源碼解析與用法,通過(guò)實(shí)例,我們?nèi)媪私饬四J(rèn)插槽、具名插槽和作用域插槽的用法,并深入理解了其在Vue源碼中的實(shí)現(xiàn)原理,需要的朋友可以參考下
    2024-01-01
  • vue接入高德地圖繪制扇形效果的案例詳解

    vue接入高德地圖繪制扇形效果的案例詳解

    這篇文章主要介紹了vue接入高德地圖繪制扇形,需求是有一個(gè)列表,列表的數(shù)據(jù)就是一個(gè)基站信息,包含基站的經(jīng)緯度信息和名字,基站下面又分扇區(qū),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 超詳細(xì)的5個(gè)Shell腳本實(shí)例分享(值得收藏)

    超詳細(xì)的5個(gè)Shell腳本實(shí)例分享(值得收藏)

    這篇文章主要介紹了超詳細(xì)的5個(gè)Shell腳本實(shí)例分享(值得收藏),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vue中用動(dòng)態(tài)組件實(shí)現(xiàn)選項(xiàng)卡切換效果

    vue中用動(dòng)態(tài)組件實(shí)現(xiàn)選項(xiàng)卡切換效果

    本篇文章主要介紹了vue中用動(dòng)態(tài)組件實(shí)現(xiàn)選項(xiàng)卡切換效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 使用Vue3和Echarts?5繪制帶有立體感流線中國(guó)地圖(推薦收藏!)

    使用Vue3和Echarts?5繪制帶有立體感流線中國(guó)地圖(推薦收藏!)

    最近接到一個(gè)需求是做一個(gè)中國(guó)地圖,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3和Echarts?5繪制帶有立體感流線中國(guó)地圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • design vue 表格開(kāi)啟列排序的操作

    design vue 表格開(kāi)啟列排序的操作

    這篇文章主要介紹了design vue 表格開(kāi)啟列排序的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 基于Vuejs實(shí)現(xiàn)購(gòu)物車功能

    基于Vuejs實(shí)現(xiàn)購(gòu)物車功能

    這篇文章主要為大家詳細(xì)介紹了基于Vuejs實(shí)現(xiàn)購(gòu)物車功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Vue組件層級(jí)關(guān)系詳細(xì)分析

    Vue組件層級(jí)關(guān)系詳細(xì)分析

    這篇文章主要介紹了Vue組件的層級(jí)關(guān)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue的props配置項(xiàng)詳解

    Vue的props配置項(xiàng)詳解

    這篇文章主要為大家詳細(xì)介紹了Vue的props配置項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 不同場(chǎng)景下Vue中虛擬列表實(shí)現(xiàn)

    不同場(chǎng)景下Vue中虛擬列表實(shí)現(xiàn)

    虛擬列表用來(lái)解決大數(shù)據(jù)量數(shù)據(jù)渲染問(wèn)題,由于一次性渲染性能低,所以誕生了虛擬列表渲染,下面我們就來(lái)學(xué)習(xí)一下不同場(chǎng)景下Vue中虛擬列表是如何實(shí)現(xiàn)的吧
    2023-10-10

最新評(píng)論

万年县| 新兴县| 永胜县| 聂拉木县| 全南县| 天镇县| 宜城市| 东宁县| 延川县| 阳谷县| 河西区| 婺源县| 青州市| 承德县| 长泰县| 巍山| 靖江市| 鞍山市| 乌什县| 大埔区| 鄂托克前旗| 观塘区| 家居| 忻城县| 大丰市| 镇原县| 剑河县| 玉田县| 榆中县| 台湾省| 云阳县| 清水县| 沧州市| 泰州市| 内丘县| 错那县| 土默特左旗| 任丘市| 湟源县| 五家渠市| 乳山市|