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

Vite模塊動(dòng)態(tài)導(dǎo)入之Glob導(dǎo)入實(shí)踐

 更新時(shí)間:2026年01月15日 09:16:13   作者:獨(dú)淚了無痕  
import.meta.glob是Vite提供的強(qiáng)大模塊動(dòng)態(tài)導(dǎo)入功能,用于在構(gòu)建時(shí)批量導(dǎo)入模塊并生成按需加載的代碼,適用于處理大量文件

前言

在 Vite 中有一個(gè)特殊的導(dǎo)入方式,即我們今天打算討論的 Glob 導(dǎo)入 。

這種導(dǎo)入彌補(bǔ)完善了 JavaScript 導(dǎo)入體系中不能同時(shí)導(dǎo)入到某個(gè)文件目錄的多個(gè)文件的缺陷。

一、快速入門

1.1 什么是 import.meta.glob

在 Vue3 和 Vite 的開發(fā)環(huán)境中, import.meta.glob()Vite 提供的一個(gè)強(qiáng)大的模塊動(dòng)態(tài)導(dǎo)入功能,用于在構(gòu)建時(shí)批量導(dǎo)入模塊(如 Vue 文件、圖片、JSON 等),并生成按需加載的代碼。

Glob 導(dǎo)入可以導(dǎo)入目錄中的所有文件/目錄,也可以對(duì)文件/目錄進(jìn)行匹配篩選。

這在處理大量的文件,如組件、頁(yè)面或其他模塊時(shí)特別有用,特別是當(dāng)需要根據(jù)某些條件或模式來動(dòng)態(tài)加載它們時(shí)。

1.2 基本語(yǔ)法

const modules = import.meta.glob(
	pattern,          		// 匹配文件路徑的 glob 模式:字符串或字符串?dāng)?shù)組
    {						// 可選配置
    	eager?: boolean, 	// 是否同步導(dǎo)入
    	import?: string | string[], // 指定導(dǎo)入的內(nèi)容,例如:import: 'default'
    	query?: string|Record<string, string | number | boolean> // 查詢參數(shù)
  }
);
  • 所有 import.meta.glob 的參數(shù)都必須以字面量傳入,不可以在其中使用變量或表達(dá)式。
  • 路徑相對(duì)于當(dāng)前文件,必須是相對(duì)路徑(以 ./ 開頭)或絕對(duì)路徑(以 / 開頭,相對(duì)于項(xiàng)目根目錄解析)或一個(gè)別名路徑。

二、核心功能

假設(shè)有一個(gè) src/views/DynamicComponents 目錄,里面包含多個(gè) Vue 組件。

若是根據(jù)某些條件動(dòng)態(tài)地導(dǎo)入這些組件,那么可以使用 import.meta.glob 來實(shí)現(xiàn)這個(gè)需求。

2.1 基本導(dǎo)入

這種導(dǎo)入是動(dòng)態(tài)導(dǎo)入,通過 glob 模式來匹配文件,默認(rèn)返回一個(gè)函數(shù)對(duì)象,對(duì)象的鍵是匹配到的文件路徑,值是 import() 函數(shù),這個(gè)功能可以幫助我們實(shí)現(xiàn)模塊的按需加載。

// 使用 import.meta.glob 導(dǎo)入所有組件
const modules = import.meta.glob('/src/views/DynamicComponents/*.vue')

// 通過遍歷 modules 對(duì)象來動(dòng)態(tài)加載組件
for (const path in modules) {
  // 輸出模塊路徑
  console.log('模塊路徑:', path)
  console.log('文件名:', path.split("/src/views/DynamicComponents/")[1].split('.vue')[0])
  // 等待模塊加載完成,輸出模塊內(nèi)容
  await modules[path]().then((mod: any) => {
    console.log('模塊內(nèi)容:', mod.default); // 這里可以訪問到組件的默認(rèn)導(dǎo)出
  });
}

說明】異步加載 - 代碼分割,按需加載。

2.2 同步導(dǎo)入

Glob 導(dǎo)入匹配到的文件默認(rèn)是懶加載的,若是想要直接引入所有的模塊,則需要借助 eager 選項(xiàng), 當(dāng)設(shè)置為 true 時(shí),它會(huì)立即導(dǎo)入所有匹配的模塊,而不是返回一個(gè) Promise,這在某些場(chǎng)景下可以提高性能。

const eagerModules = import.meta.glob('/src/views/DynamicComponents/*.vue', {eager: true})

for (const path in modules) {
  console.log(modules[path]); // 直接訪問模塊
}

注意】同步加載 - 所有模塊打包在一起。

2.3 指定導(dǎo)入內(nèi)容

若是只想要導(dǎo)入模塊中的部分內(nèi)容,那么可以利用 import 選擇,其允許我們指定導(dǎo)入模塊的導(dǎo)出內(nèi)容。

const specificImports = import.meta.glob('./DynamicComponents/*.vue', {
  import: 'default', // 只導(dǎo)入默認(rèn)導(dǎo)出
  eager: true
})

const multipleImports = import.meta.glob('./DynamicComponents/*.vue', {
  import: ['default', 'setup'], // 導(dǎo)入多個(gè)指定內(nèi)容
  eager: true
})

自定義查詢

還可以使用 query 選項(xiàng)來提供對(duì)導(dǎo)入的自定義查詢,比如,可以將資源作為字符串引入或者作為 URL 引入。

// 作為 URL 導(dǎo)入
const imageUrls = import.meta.glob('./assets/*.png', {
  query: '?url'
})

// 作為原始文本導(dǎo)入
const rawContents = import.meta.glob('./files/*.md', {
  query: '?raw'
})

三、小結(jié)

import.meta.glob 是 Vite 的核心功能,用于高效處理模塊批量導(dǎo)入,它可以幫助我們實(shí)現(xiàn)模塊的按需加載。

通過 import.meta.glob,我們可以輕松地動(dòng)態(tài)導(dǎo)入模塊,并在 Vue3 項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)路由、懶加載組件等功能。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3.x ref()語(yǔ)法糖賦值方式

    vue3.x ref()語(yǔ)法糖賦值方式

    這篇文章主要介紹了vue3.x ref()語(yǔ)法糖賦值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue動(dòng)態(tài)設(shè)置img的src路徑實(shí)例

    vue動(dòng)態(tài)設(shè)置img的src路徑實(shí)例

    今天小編就為大家分享一篇vue動(dòng)態(tài)設(shè)置img的src路徑實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 手把手教你Vue3?按需引入?Echarts的過程(收藏)

    手把手教你Vue3?按需引入?Echarts的過程(收藏)

    新項(xiàng)目采用?Vue3?作為前端項(xiàng)目框架,避免不了要使用?echarts,但是在使用的時(shí)候,出現(xiàn)了與?Vue2?使用不一樣的地方,所以特別記下來,希望給到有需要的同學(xué)一些幫助
    2023-10-10
  • vue js格式化數(shù)字為金額格式代碼

    vue js格式化數(shù)字為金額格式代碼

    這篇文章主要介紹了vue js格式化數(shù)字為金額格式代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue-router的鉤子函數(shù)用法實(shí)例分析

    vue-router的鉤子函數(shù)用法實(shí)例分析

    這篇文章主要介紹了vue-router的鉤子函數(shù)用法,結(jié)合實(shí)例形式分析了vue路由鉤子分類及vue-router鉤子函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10
  • Vue2.0 多 Tab切換組件的封裝實(shí)例

    Vue2.0 多 Tab切換組件的封裝實(shí)例

    本篇文章主要介紹了Vue2.0 多 Tab切換組件的封裝實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue實(shí)現(xiàn)下載文件而非瀏覽器直接打開的方法

    Vue實(shí)現(xiàn)下載文件而非瀏覽器直接打開的方法

    對(duì)于瀏覽器來說,文本、圖片等可以直接打開的文件,不會(huì)進(jìn)行自動(dòng)下載,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)下載文件而非瀏覽器直接打開的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • vue打開新窗口并實(shí)現(xiàn)傳參的圖文實(shí)例

    vue打開新窗口并實(shí)現(xiàn)傳參的圖文實(shí)例

    這篇文章主要給大家介紹了關(guān)于vue打開新窗口并實(shí)現(xiàn)傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue slot 在子組件中顯示父組件傳遞的模板

    vue slot 在子組件中顯示父組件傳遞的模板

    這篇文章主要介紹了vue slot 在子組件中顯示父組件傳遞的模板,需要的朋友可以參考下
    2018-03-03
  • 詳解vue-cli + webpack 多頁(yè)面實(shí)例配置優(yōu)化方法

    詳解vue-cli + webpack 多頁(yè)面實(shí)例配置優(yōu)化方法

    本篇文章主要介紹了詳解vue-cli + webpack 多頁(yè)面實(shí)例配置優(yōu)化方法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07

最新評(píng)論

蓬莱市| 巍山| 鄂州市| 南江县| 三台县| 虹口区| 赤壁市| 古田县| 册亨县| 隆安县| 乡宁县| 彩票| 民丰县| 伊川县| 乌拉特后旗| 松阳县| 呼伦贝尔市| 栾城县| 伊川县| 永德县| 河西区| 任丘市| 潞城市| 大余县| 高淳县| 吕梁市| 台南县| 前郭尔| 玉山县| 大兴区| 台东县| 澄迈县| 论坛| 武川县| 河北区| 新竹市| 陇西县| 江阴市| 博白县| 澄城县| 邳州市|