亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

    界首市| 延吉市| 兴化市| 望都县| 麻阳| 卓尼县| 壤塘县| 大埔区| 务川| 理塘县| 河曲县| 鲁甸县| 伊春市| 新安县| 竹北市| 天镇县| 江津市| 贺兰县| 密云县| 柳河县| 洛宁县| 建阳市| 上饶市| 鹤壁市| 宿州市| 灵石县| 张家口市| 镶黄旗| 宣武区| 永吉县| 皮山县| 四川省| 海安县| 黔西| 民权县| 湘潭县| 桦南县| 乌恰县| 濮阳县| 吴桥县| 合江县|