中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue異步組件與組件懶加載問題怎么解決

發布時間:2022-04-01 11:05:08 來源:億速云 閱讀:472 作者:iii 欄目:開發技術

本篇內容主要講解“vue異步組件與組件懶加載問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue異步組件與組件懶加載問題怎么解決”吧!

    vue異步組件與組件懶加載

    在寫項目的時候,需要動態配置路由菜單,所有的菜單都是通過配置生成的,這就意味著菜單的路徑(在vue開發項目里面就是一個字符串的路徑)需要異步加載進去,但是由于對webpack的import不是很熟悉,所以就有一下的坑需要填了

    錯誤的原因分析

    _import.js
    module.exports = file => () => import(file)

    vue異步組件與組件懶加載問題怎么解決

    但是這種方法錯誤的原因是:

    webpack 編譯es6 動態引入 import() 時不能傳入變量,例如dir =’path/to/my/file.js’ ; import(dir) , 而要傳入字符串 import(‘path/to/my/file.js’),這是因為webpack的現在的實現方式不能實現完全動態。

    解決方案一

    可以通過字符串模板來提供部分信息給webpack;例如import(./path/${myFile}), 這樣編譯時會編譯所有./path下的模塊,但運行時確定myFile的值才會加載,從而實現懶加載。

    vue異步組件與組件懶加載問題怎么解決

    解決方案二

    function lazyLoadView(AsyncView) {
      const AsyncHandler = () => ({
        component: AsyncView,
          // A component to use while the component is loading.
        loading: require('@/view/system/Loading.vue').default,
          // A fallback component in case the timeout is exceeded
          // when loading the component.
        error: require('@/view/system/Timeout.vue').default,
          // Delay before showing the loading component.
          // Default: 200 (milliseconds).
        delay: 200,
          // Time before giving up trying to load the component.
          // Default: Infinity (milliseconds).
        timeout: 10000
      });
      return Promise.resolve({
        functional: true,
        render(h, { data, children }) {
            // Transparently pass any props or children
            // to the view component.
          return h(AsyncHandler, data, children);
        }
      });
    }
    const My = () => lazyLoadView(import('@/view/My.vue'));
    const router = new VueRouter({
      routes: [
        {
          path: '/my',
          component: My
        }
      ]
    })

    通過上述兩種方法都能夠解決 動態組件的懶加載效果

    vue懶加載組件 路徑不對

    最近在使用VueRouter的懶加載組件的時候.

    const routes = [
        {
            path: '/',
            component: App
        },
        {
            path: '/category',
            component: resolve => {require(['./components/Category.vue'], resolve)}
        }
    ]

    但是在加載/category的時候,我發現會報錯。

    原來webpack會把這個懶加載單獨加載一個js,默認按照

    0.app.js 1.app.js ……的順序加載的

    通過簡單的debug發現是0.app.js的路徑不對

    通過webpack的設置即可解決(我使用的laravel,配置根據情況自行修改)

    Elixir.webpack.mergeConfig({
        module: {
            loaders: [
                {
                    test: /\.css/,
                    loader: "style!css"
                }
            ]
        },
        output: {
            publicPath: "js/"
        }
    })

    配置下output下的publicPath即可。 

    到此,相信大家對“vue異步組件與組件懶加載問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    vue
    AI

    隆子县| 易门县| 贵州省| 洪雅县| 海口市| 东台市| 建平县| 玛沁县| 东至县| 岗巴县| 汽车| 临海市| 无棣县| 玛沁县| 永寿县| 平谷区| 齐齐哈尔市| 囊谦县| 龙胜| 兴义市| 潞西市| 张家川| 扬州市| 忻州市| 朝阳区| 三江| 安化县| 洛浦县| 宜昌市| 长沙市| 杭锦后旗| 墨脱县| 茂名市| 定边县| 三明市| 荔浦县| 科技| 延津县| 朝阳区| 无为县| 凭祥市|