JS動態引入模組

RicardoX3發表於2024-08-30

這是靜態引入,import xx from ‘xxx’;

這是動態引入,import('xxx')

動態引入是一個非同步操作,即它會返回一個Promise物件,因此我們可以捕獲引入失敗的異常。

具體運用場景:

路由由後端動態生成,前端根據獲取到的路由動態生成選單,並根據對應路由去找到對應的元件進行跳轉。

譬如路由為/home,那麼對應檔案/views/home/index.vue必須存在,才能正確進行跳轉。

若後端新增了新的路由(無論是直接運算元據庫,或者前端透過配置頁面去調介面新增),那麼此時打包的專案內是不存在新增路由的頁面檔案,因此需要用到動態路由。

const router = {
                    path: item.path,
                    name: item.path || '',
                    component: () => import(`@/views/${item.path}/index.vue`).catch(() => {
                            return import('@/components/Transitionpage/index.vue') //未找到上面引入的模組時,引入該過渡頁面
                        }),
                })
}

注意,返回的是一個promise物件,因此無論是正常捕獲then還是異常捕獲catch,都要重新返回一個檔案引用,否則會卡住。

相關文章