记一次项目优化

本文介绍了如何通过调整Webpack配置来提升前端应用的性能,包括减少代码包大小、开启gzip压缩、兼容IE、按需引入UI框架、抽离公共CSS以及懒加载。此外,还提到了HTTP层面的优化,如减少首页请求、使用CDN加速及外部扩展的处理。通过这些方法,可以显著提高应用加载速度和用户体验。
摘要由CSDN通过智能技术生成
  • Webpack方面

    • 减少代码包大小,提高安全性。在config/index.js文件内,修改productionSourceMap: false。表示打包后不要map文件,map文件的作用是如果运行错误会出现报错信息,而改成false,可以对报错信息屏蔽。

    • 开启gzip压缩。在config/index.js文件内,设置productionGzip: true, productionGzipExtensions: ['js', 'css','svg']gzip(GNU- ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。

      //同时在build/webpack.prod.conf.js如以下设置。当然,如果没compression-webpack-plugin要先install。
      const CompressionWebpackPlugin = require('compression-webpack-plugin');
      plugins.push(
          new CompressionWebpackPlugin({
              asset: '[path].gz[query]',// 目标文件名
              algorithm: 'gzip',// 使用gzip压缩
              test: new RegExp(
                  '\\.(js|css)$' // 压缩 js 与 css
              ),
              threshold: 10240,// 资源文件大于10240B=10kB时会被压缩
              minRatio: 0.8 // 最小压缩比达到0.8时才会被压缩
          })
      )
      
    • 兼容IE。import 'babel-polyfill对IE浏览器做兼容处理,让IE8或以下浏览器支持ES6 Promise语法。

      //安装
      npm install --save-dev babel-polyfill
      
      //在webpack.base.conf.js中
      import("babel-polyfill");
      
      //使用babel-polyfill
      modules.exports = {
            entry: {
              app: ["babel-polyfill", ''./src/main.js"]
            }
          }
      
    • UI框架按需引入。减少文件体积。

      //借助插件
      npm install babel-plugin-import --save-dev
      
      //在文件 .babelrc 中配置:
      {
        "plugins": [["import", {
          "libraryName": "view-design",
          "libraryDirectory": "src/components"
        }]]
      }
      
      //在main.js中还需这样:
      import 'view-design/dist/styles/iview.css';
      
      //在组件中
      import { Button, Table } from 'view-design';
      Vue.component('Button', Button);
      Vue.component('Table', Table);
      
  • 代码方面

    • 抽离公共CSS文件。
    • 整合外部函数,全部放入一个JS文件中,并通过export暴露出来。
    • 利用懒加载。一次性不要加载全部的页面。
  • HTTP方面

    • 首页一次性不要请求太多东西,有些数据请求可以通过触发事件来执行。

    • 采用CDN。 内容分发网络的本质仍然是一个缓存,而且将数据缓存在离用户最近的地方,使用户以最快的速度获取数据,即所谓网络访问的第一跳。 由于CDN部署在网络运营商的机房,这些机房又是终端用户网络的服务提供商,因此用户请求路由的第一条就到达了CDN服务器,当CDN中存在浏览器请求的资源时,从CDN直接返回给浏览器,最短路径返回响应,加快用户访问速度,减少数据中心负载压力。 CDN能够缓存的一般是静态资源,如图片,文件,CSS,script脚本,静态网页等,但是这些文件访问频率很高,将其缓存在CDN可以极大改善网页的打开速度。 用<script>来代替 npm install 。减少文件体积。

      //使用cdn在index.html中引入
      <script src="//cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
       <script src="//cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
       <script src="//cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
       <script src="//cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
       <script src="https://cdn.bootcss.com/mint-ui/2.2.13/index.js"></script>
       <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
      
      //修改build/webpack.base.conf.js文件,externals外部扩展,通过这种方式引入依赖库,不需要webpack处理。
      module.exports = {
       ...
       externals: {
       'vue': 'Vue', // 右侧vue是我们自己引入时候要用的,左侧是开发依赖库的主人定义的不能修改
       'vue-router': 'VueRouter',
       'vuex': 'Vuex',
       'axios': 'axios',
       'mint-ui': 'MINT',
       'crypto-js': 'CryptoJS'
       }
       ...
      }
      
      //如果项目一开始是用npm 的,那么需要把诸如 import xx from 'vue' 这种的注释掉。
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值