zoukankan      html  css  js  c++  java
  • vue项目实现按需加载的3种方式

    1. vue异步组件技术

    vue-router配置路由,使用vue的异步组件技术,可以实现按需加载。

    但是,这种情况下一个组件生成一个js文件。

    举例如下:

    {
        path: '/promisedemo',
        name: 'PromiseDemo',
        component: resolve => require(['../components/PromiseDemo'], resolve)
    }

    2.es提案的import() (推荐)

    webpack官方文档:webpack中使用import()

    vue官方文档:路由懒加载(使用import())

    用例:

    // 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
    const ImportFuncDemo1 = () => import('../components/ImportFuncDemo1')
    const ImportFuncDemo2 = () => import('../components/ImportFuncDemo2')
    
    // 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
    // const ImportFuncDemo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo')
    // const ImportFuncDemo2 = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo2')
    export default new Router({
        routes: [
            {
                path: '/importfuncdemo1',
                name: 'ImportFuncDemo1',
                component: ImportFuncDemo1
            },
            {
                path: '/importfuncdemo2',
                name: 'ImportFuncDemo2',
                component: ImportFuncDemo2
            }
        ]
    }) 

    3.webpack提供的require.ensure()

    vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。

    这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

    举例如下:

    {
        path: '/promisedemo',
        name: 'PromiseDemo',
        component: resolve => require.ensure([], () => resolve(require('../components/PromiseDemo')), 'demo')
    },
    {
        path: '/hello',
        name: 'Hello',
        // component: Hello
        component: resolve => require.ensure([], () => resolve(require('../components/Hello')), 'demo')
    }

      如果想要打包的文件显示特定的名字,那在webpack的配置文件中把webpack.prod.conf.js文件中的output

    output: {
        path: config.build.assetsRoot,
        filename: utils.assetsPath('js/[name].[chunkhash].js'),
        chunkFilename: utils.assetsPath('js/[name].[chunkhash].js')
    }, 

    参考: https://www.cnblogs.com/huyifei/p/10210787.html

  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/ToBeBest/p/13404617.html
Copyright © 2011-2022 走看看