首页 > 其他分享 >vue 性能优化

vue 性能优化

时间:2023-02-21 10:24:21浏览次数:38  
标签:vue config 压缩 js cdn gzip 优化 性能

1.图片压缩

vue正常打包之后一些图片文件很大,使打包体积很大,使用image-webpack-loader压缩图片,画质有损,8M压缩为1.8M

(1)先安装依赖:cnpm install image-webpack-loader --save-dev,如果安装失败,可 cnpm update

(2)配置 vue.config.js

  chainWebpack: config => {
    // ============压缩图片 start============
    config.module
      .rule('images')
      .use('image-webpack-loader')
      .loader('image-webpack-loader')
      .options({ bypassOnDebug: true })
      .end()
    // ============压缩图片 end============

  },

2.cdn(可选)

// cdn链接
const cdn = {
  // cdn:模块名称和模块作用域命名(对应window里面挂载的变量名称)
  externals: {
    vue: 'Vue',
    vuex: 'Vuex',
    'vue-router': 'VueRouter'
  },
  // cdn的css链接
  css: [],
  // cdn的js链接
  js: [
    'https://cdn.staticfile.org/vue/2.6.10/vue.min.js',
    'https://cdn.staticfile.org/vuex/3.0.1/vuex.min.js',
    'https://cdn.staticfile.org/vue-router/3.0.3/vue-router.min.js'
  ]
}

 chainWebpack: config => {
     // ============注入cdn start============
    config.plugin('html').tap(args => {
      // 生产环境或本地需要cdn时,才注入cdn
      if (isProduction || devNeedCdn) args[0].cdn = cdn
      return args
    })
    // ============注入cdn start============
}

public——index.html

 <!-- 使用CDN的CSS文件 -->
   <% for (var i in htmlWebpackPlugin.options.cdn &&
   htmlWebpackPlugin.options.cdn.css) { %>
   <link
     href="<%= htmlWebpackPlugin.options.cdn.css[i] %>"
     rel="stylesheet"
   />
   <% } %>


<!-- 使用CDN的JS文件 -->
   <% for (var i in htmlWebpackPlugin.options.cdn &&
   htmlWebpackPlugin.options.cdn.js) { %>
   <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
   <% } %>
   <!-- 使用CDN的JS文件 -->

3.js压缩,比较两种压缩模式

 configureWebpack: config => {
    // 用cdn方式引入,则构建时要忽略相关资源
    if (isProduction || devNeedCdn) config.externals = cdn.externals
    
    config.plugins.push(
    //js压缩的第一种方式 new UglifyJsPlugin({ uglifyOptions: { //生产环境自动删除console compress: { // warnings: false, // 若打包错误,则注释这行 drop_debugger: true, drop_console: true, pure_funcs: ['console.log'] } }, sourceMap: false, parallel: true //使用多进程并行运行来提高构建速度 }),
    //js压缩的第二种方式 new TerserPlugin({ parallel:true //使用多进程并发运行提高构建速度 }) ) },

压缩结果比较:

不压缩情况下:

 

 

 UglifyJsPlugin压缩

 

 TerserPlugin压缩

 

4.css压缩和html压缩

5.文件大小压缩

cnpm install compression-webpack-plugin -D

  new ComepressionPlugin({
        test:/\.(css|js)$/,  // 哪些文件需要压缩
        threshold:500, // 设置文件多大开始压缩
        minRatio:0.7, // 至少压缩的比例
        algorithm:"gzip", // 采用的压缩算法
      })

进行Nginx配置

location ~ .*\.(js|css)$ {
    gzip on; # 开启gzip
    gzip_static on; # 开启后查找.gz结尾的文件直接返回,不进行压缩
    gzip_min_length 1k; # 文件大于1K才进行压缩
    gzip_http_version 1.1; # 设置gzip针对的http协议版本
    gzip_comp_level 9; # 压缩级别,1-9,数字越大压缩越好,越占用cpu
    gzip_types  text/css application/javascript; # 进行压缩的文件类型
    root /dist;
}

 

标签:vue,config,压缩,js,cdn,gzip,优化,性能
From: https://www.cnblogs.com/wtt1000/p/17128012.html

相关文章

  • 性能测试的二八原则
    性能测试二八原则,响应时间2/5/8原则所谓响应时间的“2-5-8原则”,简单说,就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响......
  • 4 个 Vue 路由过渡动效
    Vue文件<router-viewv-slot="{Component}"><transitionname="fade"mode="out-in"><component:is="Component"/></transition></router-view......
  • Vue前端框架Element 的form表单项el-form-item的label中空格不起效和多个空格只显示一
    搜索了一下,大部分是说使用slot解决,但是使用&nbsp;&nbsp;只显示一个后又看到一篇文章Vue使用&nbsp空白占位符-钟小嘿-博客园(cnblogs.com)使用转义,但要用v-html,......
  • vue拖拽指令
    Vue.directive('drag',{//1.指令绑定到元素上回立刻执行bind函数,只执行一次//2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象//3.通过......
  • Vue3 - defineProps 设置默认值
    在TS中,仅类型声明的一个缺点defineProps是它无法为props提供默认值。为了解决这个问题,withDefaults还提供了一个编译器宏,同时给出JS默认值的写法<scriptsetuplang="ts......
  • 现代图片性能优化及体验优化指南 - 响应式图片方案
    本文是系列第二篇。系列文章:现代图片性能优化及体验优化指南-图片类型及Picture标签的使用图片资源,在我们的业务中可谓是占据了非常大头的一环,尤其是其对带宽的消......
  • 04-参数优化(Ceph Pacific)
    1.操作系统#cat/etc/sysctl.conf#sysctlsettingsaredefinedthroughfilesin#/usr/lib/sysctl.d/,/run/sysctl.d/,and/etc/sysctl.d/.##Vendorssettingsli......
  • vue3 门户网站搭建2-ngnix
    路由配好了,需要调试下build后是否可用,这时我们需要一个服务端来运行静态网页。官网直接下载一个windows版本的ngnix即可:http://nginx.org/en/download.html 下......
  • 优化ubuntu dns解析,关掉systemd-resolved
    简介ubuntu 的dns解析有时候有点慢,可能是系统自带的systemd-resolved的锅。systemd本身是做启动管理的,但是它野心大,什么都想插一脚。这不,给你默认加了一个本地dns缓存......
  • vue-cli创建 vue创建项目 vue项目目录介绍 es导入导出
    目录回顾vue-cli创建项目创建vue项目使用什么vue创建项目vue项目目录介绍es导入导出语法App.vuemain.jsAbout.vue写了什么导入导出语法vue项目编写步骤小练习-登录功......