千家信息网

Vue项目如何优化打包

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"Vue项目如何优化打包",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Vue项目如何优化打包"这篇文章吧。一、路由懒加载1.为什么
千家信息网最后更新 2025年11月07日Vue项目如何优化打包

这篇文章主要为大家展示了"Vue项目如何优化打包",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Vue项目如何优化打包"这篇文章吧。

    一、路由懒加载

    1.为什么需要路由懒加载

    当刚运行项目的时候,发现刚进入页面,就将所有的js文件和css文件加载了进来,这一进程十分的消耗时间。 如果打开哪个页面就对应的加载响应页面的js文件和css文件,那么页面加载速度会大大提升。

    2.如何实现路由懒加载

    vue官方文档:路由懒加载

    代码如下(示例):

    {    path: '/login',    component: () => import('@/views/login/index'),    hidden: true  },

    3.路由懒加载中的魔法注释

    通过在注释中指定webpackChunkName,可以自定义这个文件的名字。 代码如下(示例):

    components = () => import(/* webpackChunkName:"login"*/ "../component/Login.vue")

    二、分析包大小

    1.需求

    想要知道打包生成的文件中,每个文件所占的空间大小。以便于我们分析,对代码进行优化处理。

    2.如何生成打包分析文件

    终端中运行 npm run preview - --report, 这个命令会从我们的入口main.js进行依赖分析,分析出各个包的大小。最终会在生成的dist文件夹下生成一个report.html的文件,打开后就可以看到我们在项目使用文件占据的空间大小啦~

    (效果图如下:)

    三、webpack配置排除打包

    1.需求

    将一些不常用的包,排除在生成的打包文件以外。 例如:上图所示的xsxl.js 、 element.js,可以将其排除在打包生成的文件以外

    2.排除打包

    找到 vue.config.js, 添加 externals 项,具体如下:

    代码如下(示例):

    configureWebpack: {  // 配置单页应用程序的页面的标题  name: name,  externals: {     /**      * externals 对象属性解析。      *  基本格式:      *     '包名' : '在项目中引入的名字'      *      */    'vue': 'Vue',    'element-ui': 'ElementUI',    'xlsx': 'XLSX'  },  resolve: {    alias: {      '@': resolve('src')    }  }}

    四、 引用网络资源

    1.需求

    我们进行了上一步操作以后,打包生成后的包小了很多。但是呢,没有这些依赖包的话,项目上线是没有办法运行的。那么就需要引用网络中的资源,来支持我们代码的运行。

    2.CDN

    CDN全称叫做"Content Delivery Network",中文叫内容分发网络。我们用它来提高访问速度
    把一些静态资源:css, .js,图片,视频放在第三方的CDN服务器上,可以加速访问速度。

    好处:

    • 减少应用打包出来的包体积

    • 加快静态资源的访问

    • 利用浏览器缓存,不会变动的文件长期缓存

    3. 实现步骤

    注意:在开发环境时,文件资源还是可以从本地node_modules中取出,而只有项目上线了,才需要去使用外部资源。此时我们可以使用环境变量来进行区分。具体如下:

    代码如下(示例):

    在vue.config.js文件中:

    let externals = {}let cdn = { css: [], js: [] }const isProduction = process.env.NODE_ENV === 'production' // 判断是否是生产环境if (isProduction) {  externals = {      /**      * externals 对象属性解析:      * '包名' : '在项目中引入的名字'    */      'vue': 'Vue',      'element-ui': 'ELEMENT',      'xlsx': 'XLSX'  }  cdn = {    css: [      'https://unpkg.com/element-ui/lib/theme-chalk/index.css' // element-ui css 样式表    ],    js: [      // vue must at first!      'https://unpkg.com/vue@2.6.12/dist/vue.js', // vuejs      'https://unpkg.com/element-ui/lib/index.js', // element-ui js      'https://cdn.jsdelivr.net/npm/xlsx@0.16.6/dist/xlsx.full.min.js', // xlsx    ]  }}

    webpack配置externals配置项

    configureWebpack: {  // 配置单页应用程序的页面的标题  name: name,  externals: externals,  resolve: {    alias: {      '@': resolve('src')    }  }}

    通过 html-webpack-plugin注入到 index.html之中: 在vue.config.js文件中配置:

    chainWebpack(config) {  config.plugin('preload').tap(() => [    {      rel: 'preload',      fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],      include: 'initial'    }  ])  // 注入cdn变量 (打包时会执行)  config.plugin('html').tap(args => {    args[0].cdn = cdn // 配置cdn给插件    return args  })  // 省略其他...}

    找到 public/index.html 通过配置CDN Config 依次注入 css 和 js。 修改head的内容如下:

                        <%= webpackConfig.name %>            <% for(var css of htmlWebpackPlugin.options.cdn.css) { %>                <% } %>        <% for(var js of htmlWebpackPlugin.options.cdn.js) { %>          <% } %>  

    五、 打包去除console.log

    1.需求

    在项目打包上线后,去除掉代码中所有的console.log

    2.代码演示

    在vue.config.js文件中配置: 代码如下(示例):

    chainWebpack(config) {    config.optimization.minimizer('terser').tap((args) => {      args[0].terserOptions.compress.drop_console = true      return args    })}

    以上是"Vue项目如何优化打包"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

    文件 项目 代码 配置 生成 资源 页面 内容 示例 路由 分析 大小 需求 运行 名字 环境 篇文章 网络 速度 应用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东服务器机柜需要多少钱 软件开发的成本入什么科目 济宁联想服务器代理服务 数据库建表时类型大小错了怎么改 数据库中的数据怎么导入到页面 辛集软件开发培训哪家好 网络安全的程序有什么用 数据库查询快但页面查询慢 刚租的服务器怎么放 网络安全 专业分析 关于网络安全的手抄报教学视频 常用的网络安全关键技术的内容 幻塔同服务器为什么我看不到好友 30岁开始学软件开发还来得及吗 达梦数据库7 中标麒麟 数据库同义词 剑侠世界服务器架设 湖南网络安全技术提升哪家好 乐高网络技术 广州erp软件开发服务费 重要国家的网络安全等级 东城ibm服务器回收 数据库aoe是什么意思 北京通信技术服务器虚拟主机 保定竞秀区网络安全公司有哪些 学习网络安全体会 asp写入数据库是乱码 品牌图标软件开发 软件开发人员讨厌写周报吗 哈尔滨百城网络技术有限公司
    0