当前位置: 首页 > 知识库问答 >
问题:

前端 - 在uniapp中异步组件如何单独打包?

戎泰
2023-05-26

例如:

let VConsole = await import(/* webpackChunkName: "vcon" */ '@/common/igw/vconsole.min.js');
let whiteList = ['小明','xiaoli'];
if(whiteList.includes(userInfo.username)){
    var vconsole = new VConsole();
}
config.optimization.splitChunks({
    chunks: "all",
    automaticNameDelimiter: "~", 
    name: function (module, chunks, cacheGroupKey) {
        const moduleFileName = module
            .identifier()
            .split("/")
            .reduceRight((item) => item);
        const allChunksNames = chunks.map((item) => item.name).join("~");
        return `${moduleFileName}`;
    },
    cacheGroups: {
        vendors: {
            name: "chunk-vendors",
            chunks: "initial",
            reuseExistingChunk: true,
            enforce: true, 
            priority: 0, 
            // minChunks: 1,
            minSize: 30000,
        },
        pages: {
            name: "chunk-pages",
            test: /pages\.json$/,
            chunks: "all",
            reuseExistingChunk: true,
            enforce: true,
            priority: 90,
            minChunks: 1,
            minSize: 10000,
        },
        "jsencrypt": {
            name: "jsencrypt",
            test: /jsencrypt/,
            chunks: "all",
            reuseExistingChunk: true,
            enforce: true,
            priority: 70,
        }
    },
});

打包时候,vconsole总是被打包到chunk-vendors中,没有单独打成一个chunk,这么配置如何修改,才能实现异步加载vconsole?

共有1个答案

苏麒
2023-05-26
config.optimization.splitChunks({
    cacheGroups: {
        "vconsole": {
            name: "vconsole",
            test: /vconsole\.min\.js$/, // 匹配vconsole的路径或者文件名
            chunks: "all",
            reuseExistingChunk: true,
            enforce: true,
            priority: 80, // 优先级应该高于其他的cacheGroups
        }
    },
});

注释要写对:

let VConsole = await import(/* webpackChunkName: "vconsole" */ '@/common/igw/vconsole.min.js');
 类似资料:
  • 如果组件不是和路由绑定的页面组件,原则上是不可以使用异步数据的。因为 Nuxt.js 仅仅扩展增强了页面组件的 data 方法,使得其可以支持异步数据处理。 对于非页面组件,有两种方式可以实现数据的异步获取: 在组件的 mounted 方法里面实现异步获取数据的逻辑,之后设置组件的数据,限制是:不支持服务端渲染。 在页面组件的asyncData或fetch方法中进行API调用,并将数据作为prop

  • 我有一个组件库 index.ts 入口文件 a.jsx 组件 b.jsx c.jsx .... 在入口文件中通过require.context('./', false, //.jsx$//, 'lazy') 方式异步引入文件, 这样每一个文件就分开打包,按需加载了。 但是现在存在文件就是 如果我有的组件很小只有1kb, 2kb,3kb这种小组件的我希望他能合并在一起,避免http请求过多? 我希望

  • 问题内容: 结果显示 该代码打印所有单词并计数频率单词的使用。 我想在单独的行中打印字典。 有任何可行的方法吗? 问题答案:

  • 在过去的两天里,我一直在学习React,我在理解URL参数方面遇到了困难。 假设我想要一个路由。路线的定义如下: 现在我希望在另一个文件中定义的对象能够使用值。我该怎么做?我已经找到了关于路由url参数的教程,但没有一个解释如何实现这一点。 下面是我的视图现在的样子: 在哪里可以获得详细信息中的?我试过: 但是,未定义。

  • 我正在探索使用Spring Boot的异步servlet。据我所知,异步servlet用于在一个线程中执行长时间运行的任务,而不是容器为处理请求而启动的线程,这样容器就可以使用自己的线程来处理其他连接。基于这样的理解,我尝试了以下代码: 但问题是,运行的同一线程正在调用方法。不是应该不一样吗?

  • 本文向大家介绍在vue项目如何引入异步组件?相关面试题,主要包含被问及在vue项目如何引入异步组件?时的应答技巧和注意事项,需要的朋友参考一下 { path: '/name', name: 'name', component: () => import('../views/name.vue'), },