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

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

 更新時(shí)間:2024年03月15日 10:47:56   作者:江一銘  
這篇文章主要介紹了react+vite動(dòng)態(tài)導(dǎo)入報(bào)錯(cuò)@vite-ignore的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(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)中,一般情況下開(kāi)發(fā)不會(huì)有問(wèn)題,但是使用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í)符:必須是相對(duì)路徑(以 ./開(kāi)頭)或絕對(duì)路徑(以 / 開(kāi)頭,相對(duì)于項(xiàng)目根目錄解析)或一個(gè)別名路徑(請(qǐng)看 resolve.alias 選項(xiàng))。

Glob 匹配是使用fast-glob 來(lái)實(shí)現(xiàn)的 —— 閱讀它的文檔來(lái)查閱 支持的 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í)菜單目錄,多了自己加。注意是菜單組件目錄不是普通組件,我覺(jué)得沒(méi)哪個(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)文章

  • Vue3?函數(shù)式彈窗的實(shí)例小結(jié)

    Vue3?函數(shù)式彈窗的實(shí)例小結(jié)

    這篇文章主要介紹了Vue3?函數(shù)式彈窗的實(shí)例小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • 在vue中實(shí)現(xiàn)跨域方法小結(jié)

    在vue中實(shí)現(xiàn)跨域方法小結(jié)

    在Web開(kāi)發(fā)中,跨域問(wèn)題是一大挑戰(zhàn),跨域是指網(wǎng)絡(luò)請(qǐng)求從一個(gè)域名發(fā)起,而請(qǐng)求的目標(biāo)資源位于另一個(gè)不同的域名下,通常使用Vue CLI的代理來(lái)解決跨域問(wèn)題,而在生產(chǎn)環(huán)境中,可以通過(guò)后端配置CORS或使用Nginx反向代理,或者通過(guò)服務(wù)器中轉(zhuǎn)來(lái)解決跨域問(wèn)題
    2023-10-10
  • 淺談vue.js導(dǎo)入css庫(kù)(elementUi)的方法

    淺談vue.js導(dǎo)入css庫(kù)(elementUi)的方法

    下面小編就為大家分享一篇淺談vue.js導(dǎo)入css庫(kù)(elementUi)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue 3.0 全家桶搶先體驗(yàn)

    Vue 3.0 全家桶搶先體驗(yàn)

    這篇文章主要介紹了Vue 3.0 全家桶搶先體驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • vue同一瀏覽器登錄多賬號(hào)處理方案

    vue同一瀏覽器登錄多賬號(hào)處理方案

    項(xiàng)目在線上會(huì)遇到管理員類似權(quán)限比較大的用戶,會(huì)在同一瀏覽器登陸多個(gè)賬號(hào),遇到這樣的問(wèn)題如何處理呢,下面小編給大家介紹vue同一瀏覽器登錄多賬號(hào)處理方法,感興趣的朋友一起看看吧
    2024-01-01
  • 關(guān)于Vue開(kāi)發(fā)中v-if和v-show的聯(lián)合使用步驟

    關(guān)于Vue開(kāi)發(fā)中v-if和v-show的聯(lián)合使用步驟

    本文探討了在Vue.js項(xiàng)目中如何有效利用v-if和v-show指令來(lái)實(shí)現(xiàn)多步驟表單導(dǎo)航,確保用戶操作數(shù)據(jù)能在前后步驟間保持不變,通過(guò)具體案例分析了這兩種指令的特點(diǎn)及結(jié)合使用的最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦)

    element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦)

    項(xiàng)目開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)el-select和el-date-picker彈出框顯示時(shí)候,滾動(dòng)屏幕,導(dǎo)致彈出框定位出現(xiàn)問(wèn)題,這篇文章主要介紹了element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦),需要的朋友可以參考下
    2024-07-07
  • vue+js點(diǎn)擊箭頭實(shí)現(xiàn)圖片切換

    vue+js點(diǎn)擊箭頭實(shí)現(xiàn)圖片切換

    這篇文章主要為大家詳細(xì)介紹了vue+js點(diǎn)擊箭頭實(shí)現(xiàn)圖片切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • vue實(shí)現(xiàn)書本翻頁(yè)動(dòng)畫效果實(shí)例詳解

    vue實(shí)現(xiàn)書本翻頁(yè)動(dòng)畫效果實(shí)例詳解

    這篇文章主要介紹了vue簡(jiǎn)單實(shí)現(xiàn)書本翻頁(yè)效果,需要的朋友可以參考下
    2022-04-04
  • Vue實(shí)現(xiàn)兄弟組件間的聯(lián)動(dòng)效果

    Vue實(shí)現(xiàn)兄弟組件間的聯(lián)動(dòng)效果

    這篇文章主要介紹了Vue實(shí)現(xiàn)兄弟組件間的聯(lián)動(dòng)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

昂仁县| 朝阳市| 淮南市| 淅川县| 钟祥市| 石柱| 肥西县| 阿城市| 且末县| 雅江县| 隆子县| 桦南县| 金秀| 乌鲁木齐市| 嘉义市| 长子县| 民县| 新田县| 阿克| 娄烦县| 平顺县| 纳雍县| 建始县| 华容县| 金湖县| 遵化市| 丽江市| 凭祥市| 舟山市| 澎湖县| 来安县| 壶关县| 奉贤区| 天水市| 舒城县| 贵溪市| 瑞金市| 浦城县| 修水县| 拜泉县| 铜鼓县|