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

react+vite動(dòng)態(tài)導(dǎo)入報(bào)錯(cuò)@vite-ignore的問題及解決

 更新時(shí)間:2024年03月15日 10:47:56   作者:江一銘  
這篇文章主要介紹了react+vite動(dòng)態(tài)導(dǎo)入報(bào)錯(cuò)@vite-ignore的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

正常的動(dòng)態(tài)組件導(dǎo)入方式

webpack搭建的項(xiàng)目,不管是react還是vue通常引入動(dòng)態(tài)組件基本這么寫:

const url = import(`../pages/${locale}`)  // vite不支持

or

const url = import(`../pages/${locale}/index.jsx`)  // vite不支持

這在vite架構(gòu)中,一般情況下開發(fā)不會(huì)有問題,但是使用build打包就會(huì)給出警告提示。

錯(cuò)誤信息:

The above dynamic import cannot be analyzed by Vite. See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import()

或者打完包之后:

TypeError: Failed to fetch dynamically imported module: http://127.0.0.1:8080/pages/home/index.jsx

解決方案

這個(gè)需要熟讀vite官網(wǎng)教程了:https://cn.vitejs.dev/guide/features.html#glob-import

用法:

const modules = import.meta.glob('./dir/*.js')

// vite 生成的代碼
const modules = {
  './dir/foo.js': () => import('./dir/foo.js'),
  './dir/bar.js': () => import('./dir/bar.js')
}

import.meta.glob() 方法匹配某個(gè)菜單下的所有模塊,所以你還需要進(jìn)行遍歷。

例如:

我用react寫的話,因?yàn)闀?huì)有index.jsx的原因:

import.meta.glob('@/pages/*/*') 

會(huì)匹配pages下的所有一級(jí)目錄

import.meta.glob('@/pages/*/*/*') 

會(huì)匹配pages下的所有二級(jí)目錄

…以此類推

Glob 導(dǎo)入注意事項(xiàng)

這只是一個(gè) Vite 獨(dú)有的功能而不是一個(gè) Web 或 ES 標(biāo)準(zhǔn) 該 Glob 模式會(huì)被當(dāng)成導(dǎo)入標(biāo)識(shí)符:必須是相對路徑(以 ./開頭)或絕對路徑(以 / 開頭,相對于項(xiàng)目根目錄解析)或一個(gè)別名路徑(請看 resolve.alias 選項(xiàng))。

Glob 匹配是使用fast-glob 來實(shí)現(xiàn)的 —— 閱讀它的文檔來查閱 支持的 Glob 模式。

你還需注意,所有 import.meta.glob的參數(shù)都必須以字面量傳入。你 不 可以在其中使用變量或表達(dá)式。

目錄結(jié)構(gòu)

封裝動(dòng)態(tài)方法

// locale為路徑名稱 例如:dashboard/analysis
function importLocale(locale) {
    // 判斷 / 出現(xiàn)次數(shù)  用于匹配菜單組件 (pages目錄下)
    let n = (locale.split('/')).length - 1;
    // vite動(dòng)態(tài)導(dǎo)入方法
    let modules = import.meta.glob('@/pages/*/*')

    // 組件層級(jí)  0一級(jí) ,1二級(jí),2三級(jí),3四級(jí),4五級(jí)  
    // pages下一級(jí)目錄:commonview/index.jsx     login/index.jsx等等
    // pages下二級(jí)目錄:dashboard/analysis/index.jsx    system/user/index.jsx等等
    switch (n) {
        case 0:
            modules = import.meta.glob('@/pages/*/*')
            break;
        case 1:
            modules = import.meta.glob('@/pages/*/*/*')
            break;
        case 2:
            modules = import.meta.glob('@/pages/*/*/*/*')
            break;
        case 3:
            modules = import.meta.glob('@/pages/*/*/*/*/*')
            break;
        case 4:
            modules = import.meta.glob('@/pages/*/*/*/*/*/*')
            //最多給你5級(jí)菜單目錄,多了自己加。注意是菜單組件目錄不是普通組件,我覺得沒哪個(gè)傻逼會(huì)寫好幾級(jí)目錄,菜單是系統(tǒng)設(shè)置-菜單管理里面添加的,注意下就行。
            break;
        default:
            break;
    }

    let url = modules[`/src/pages/${locale}/index.jsx`]
    
    // 找不到本地組件直接403
    if (url == undefined) url = () => import(`../components/error403`)
    
    // const url = import(`../pages/${locale}`)  // vite不支持

    return url
}

總結(jié)

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

相關(guān)文章

  • Vue.js計(jì)算屬性的變化監(jiān)聽的示例詳解

    Vue.js計(jì)算屬性的變化監(jiān)聽的示例詳解

    在Vue.js中,計(jì)算屬性(computed properties)是組件的重要組成部分,它們根據(jù)組件的數(shù)據(jù)自動(dòng)計(jì)算新的值,并在數(shù)據(jù)變化時(shí)自動(dòng)更新,本文將深入探討如何在Vue.js中監(jiān)聽計(jì)算屬性的變化,幫助你更好地理解Vue.js的響應(yīng)式系統(tǒng),需要的朋友可以參考下
    2025-03-03
  • vue視頻播放暫停代碼

    vue視頻播放暫停代碼

    今天小編就為大家分享一篇vue視頻播放暫停代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級(jí)教程)

    如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級(jí)教程)

    本文給大家介紹如何使用electron將vue項(xiàng)目打包成.exe文件,大家要注意一下vue2項(xiàng)目,使用的vue-element-admin框架,用electron打包成.exe文件,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-03-03
  • vue-cli3.0實(shí)現(xiàn)一個(gè)多頁面應(yīng)用的歷奇經(jīng)歷記錄總結(jié)

    vue-cli3.0實(shí)現(xiàn)一個(gè)多頁面應(yīng)用的歷奇經(jīng)歷記錄總結(jié)

    這篇文章主要介紹了vue-cli3.0實(shí)現(xiàn)一個(gè)多頁面應(yīng)用的歷奇經(jīng)歷,總結(jié)分析了vue-cli3.0實(shí)現(xiàn)一個(gè)多頁面應(yīng)用遇到的問題與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 使用vNode實(shí)現(xiàn)給列表字段打標(biāo)簽

    使用vNode實(shí)現(xiàn)給列表字段打標(biāo)簽

    這篇文章主要為大家介紹了使用vNode實(shí)現(xiàn)給列表字段打標(biāo)簽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue?codemirror實(shí)現(xiàn)在線代碼編譯器效果

    vue?codemirror實(shí)現(xiàn)在線代碼編譯器效果

    這篇文章主要介紹了vue-codemirror實(shí)現(xiàn)在線代碼編譯器?,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 淺談vue首次渲染全過程

    淺談vue首次渲染全過程

    這篇文章主要介紹了淺談vue首次渲染全過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vuex中mapState思想應(yīng)用

    vuex中mapState思想應(yīng)用

    這篇文章主要分享vuex中mapState思想及應(yīng)用,在需求開發(fā)過程中,有的接口返回的結(jié)果中有很多字段需要展示到頁面上。通??梢詫⑦@些字段在.vue文件中封裝為計(jì)算屬性,或者重新將對應(yīng)字段賦值到 data 中的字段來達(dá)到便于使用的目的,具體內(nèi)容,我們一起來看下面文章內(nèi)容吧
    2021-10-10
  • vue父組件監(jiān)聽子組件數(shù)據(jù)更新方式(hook)

    vue父組件監(jiān)聽子組件數(shù)據(jù)更新方式(hook)

    這篇文章主要介紹了vue父組件監(jiān)聽子組件數(shù)據(jù)更新方式(hook),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • VSCode創(chuàng)建Vue項(xiàng)目的完整步驟教程

    VSCode創(chuàng)建Vue項(xiàng)目的完整步驟教程

    Vue是一個(gè)輕量級(jí)、漸進(jìn)式的Javascript框架,如果想要要開發(fā)全新的Vue項(xiàng)目,建議項(xiàng)目構(gòu)建工具vue-cli,下面這篇文章主要給大家介紹了關(guān)于VSCode創(chuàng)建Vue項(xiàng)目的完整步驟,需要的朋友可以參考下
    2022-06-06

最新評(píng)論