iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >Vue项目打包、合并及压缩优化网页响应速度的方法
  • 898
分享到

Vue项目打包、合并及压缩优化网页响应速度的方法

2024-04-02 19:04:59 898人浏览 八月长安
摘要

这篇文章主要介绍“Vue项目打包、合并及压缩优化网页响应速度的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue项目打包、合并及压缩优化网页响应速度的方法”文

这篇文章主要介绍“Vue项目打包、合并及压缩优化网页响应速度的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue项目打包、合并及压缩优化网页响应速度的方法”文章能帮助大家解决问题。

一.请求内容太大

在项目打包后,我们经常会发现打包后的文件 vendors 和 app 文件尤其过大,其中app.js文件里放的是项目中各个页面的逻辑代码,vendor.js放的是各个页面各个组件公用的一些代码。随着项目复杂度的增加,该文件的大小也与日俱增。在带宽有限的情况下,往往下载这两个文件就会等很长时间。

解决方案:

  • 路由懒加载:分割代码块

Vue支持异步组件,即可以在使用组件的地方使用一个Promise,Promise最终会通过resolve回传一个组件对象。而webpack的动态import的方式可以让代码分块进行打包,并且返回一个Promise(正是异步组件所需要的)。在路由配置表里使用import可以将各个页面组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就避免将所有内容打包在一个chunk里,从而“按需加载”,大大提高响应速度。如下图所示引入路由组件:

Vue项目打包、合并及压缩优化网页响应速度的方法

CDN引入

业务代码是经常更新迭代的,为了让浏览器尽可能长的时间缓存我们的静态文件,如果把类库代码和业务代码打包在一起,那么类库代码会跟着业务代码的更新而更新,而不能长时间的利用浏览器里缓存。我们希望利用缓存,减少浏览器流量,提高用户浏览器加载速度,所以单独拆分出来进行打包。一般第三方包都会有script引入方案,只需要打包的时候忽略制定第三方包,然后在模板上加上相应的导入链接。

首先没有vue.config.js需要在项目根目录创建

具体代码如下:

const cdn = {
    // 忽略打包的第三方库
    externals: {
      vue: "Vue",
      "element-ui": "ELEMENT",
      "vue-router": "VueRouter",
      vuex: "Vuex",
      axiOS: "axios",
      moment: "moment",
      echarts: "echarts"
    },
  
    // 通过cdn方式使用
    js: [
      "https://cdn.bootCSS.com/vue/2.6.10/vue.runtime.min.js",
      "Https://cdn.bootcss.com/vue-router/3.1.2/vue-router.min.js",
      "https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js",
      "https://cdn.bootcss.com/axios/0.19.0/axios.min.js",
      "https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js",
      "https://cdn.bootcss.com/echarts/3.7.1/echarts.min.js",
      "https://cdn.bootcdn.net/ajax/libs/element-ui/2.8.2/index.js",
    ],
  
    css: ["https://unpkg.com/element-ui@2.8.2/lib/theme-chalk/index.css"],
  }

module.exports = {
    publicPath: "/CRM/dist/",
    // publicPath: "./",
    chainWEBpack: config => {
        config.plugin("html").tap(args => {
            args[0].cdn = cdn
            return args
          })
          config.plugins.delete("prefetch")
    },
    //打包忽略第三方库
    configureWebpack: { 
        externals: cdn.externals
    },
}

然后在 pulic/index.html 模板相应位置上加上(添加位置自己看着来)

//下列是css ,script的话注释换一下,仔细看很好理解,config配置是添加一个cdn变量,然后在模板中遍历添加
 <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="external nofollow"  rel="stylesheet">
    <!-- <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" crossorigin="anonymous"></script> --> 
  <% } %>

使用CDN还会有另外一个好处,就是可以提高打包速度。

压缩请求资源

一般我们部署到服务器会使用Nginx来做代理服务器,所有的请求都通过nginx转发。我们可以通过配置nginx,开启gzip。

server {
        gzip on;
        gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
}

通过上面的配置,每次浏览器向服务器请求资源时,服务器就会先把资源进行压缩后再返给浏览器,浏览器接收到后再解压处理。这样就可以很大的提高静态资源的下载速度。

但还有一点,就是这样的话,浏览器每次向服务器请求时,服务器都会执行一次压缩操作,当请求量很大时,压缩这个操作也会影响到服务器的响应速度,所以我们可以直接在打包时,就将文件打包成压缩包。这样不用服务器频繁的去打包:

安装依赖:compression-webpack-plugin

npm install compression-webpack-plugin --save-dev

vue.config.js修改:

const CompressionPlugin = require("compression-webpack-plugin");
const productionGzipExtensions = /.(js|css|JSON|txt|html|ico|svg)(?.*)?$/i;
module.exports = {
    publicPath: "./",
    productionSourceMap: false,
    configureWebpack: {...},
    chainWebpack: config => {
        config.resolve.alias.set("@", resolve("src"));
        if (process.env.node_ENV === "production") {
            config.plugin("compressionPlugin")
            .use(new CompressionPlugin({
                filename: "[path].gz[query]",
                alGorithm: "gzip",
                test: productionGzipExtensions,
                threshold: 10240,
                minRatio: 0.8,
                deleteOriginalAssets: true
            }));
        }
    },
};

nginx配置

server {
        gzip_static on;
        gzip on;
        gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
}

一.http请求次数太多

所有的事情都有个度,也就是我们所说的物极必反。我们采用按需加载,代码分割打包后,当项目越来越大,模块越来越多的时候,项目打包后,我们就会发现会生成很多的文件。对于前端性能而言,虽然每个文件更小了,但可能意味着更多的网络连接建立和关闭的开销,因此在前端优化的实践中,通常需要在文件数量和单个文件大小之间取得平衡。这里,我们可以利用webpack提供的插件 MinChunkSizePlugin, 通过合并小于 minChunkSize 大小的 chunk,将 chunk 体积保持在指定大小限制以上

解决方案:

vue.config.js配置

module.exports = {
    publicPath: "./",
    productionSourceMap: false,
    configureWebpack: {
        plugins: [
            new webpack.optimize.MinChunkSizePlugin({
              minChunkSize: 10000 // Minimum number of characters
            })
        ]
    },
}

通过以上这些操作,我们可以将打包后的文件控制在合理的大小和数量范围之内,再配合ngnix配置,开启gzip,基本上就可以解决大部分vue单页面应用,首次加载等待时间过长的问题。

关于“Vue项目打包、合并及压缩优化网页响应速度的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网html频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Vue项目打包、合并及压缩优化网页响应速度的方法

本文链接: https://www.lsjlt.com/news/95959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue项目打包、合并及压缩优化网页响应速度
    目录前言一.请求内容太大 解决方案:CDN引入压缩请求资源一.http请求次数太多 解决方案:总结前言 影响网页响应速度的因素有很多,例如:请求内容太大、http请求次数太多、服务器...
    99+
    2024-04-02
  • Vue项目打包、合并及压缩优化网页响应速度的方法
    这篇文章主要介绍“Vue项目打包、合并及压缩优化网页响应速度的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue项目打包、合并及压缩优化网页响应速度的方法”文...
    99+
    2024-04-02
  • Vue优化网页响应速度的方法是什么
    这篇文章主要介绍“Vue优化网页响应速度的方法是什么”,在日常操作中,相信很多人在Vue优化网页响应速度的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue优化网页响应速度的方法是什么”的疑惑有所...
    99+
    2023-07-04
  • vue项目打包优化的方法实战记录
    目录1.按需加载第三方库2.移除console.log3. Close SourceMap4. Externals && CDN5.路由懒加载的方式总结1.按需加载第...
    99+
    2024-04-02
  • Vue项目中打包优化的四种方法详解
    目录前言打包优化的目的:性能优化的主要方向:1.异步组件配置(路由懒加载)2.去掉打包后的 console3.使用CDN4.yarn build生成dist目录总结前言 默认情况下,...
    99+
    2024-04-02
  • ASP 响应同步打包:快速加载网页的方法?
    在当今的互联网时代,网页的加载速度直接关系到用户体验和网站流量。因此,如何提高网页的加载速度成为网站开发中的一项重要任务。ASP 响应同步打包就是一种可以加快网页加载速度的方法。 什么是ASP响应同步打包? ASP响应同步打包是一种针对A...
    99+
    2023-07-29
    响应 同步 打包
  • Android优化提升应用启动速度及Splash页面的设计方法
    这篇文章主要介绍“Android优化提升应用启动速度及Splash页面的设计方法”,在日常操作中,相信很多人在Android优化提升应用启动速度及Splash页面的设计方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-22
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作