美文网首页
webpack 之前端性能优化

webpack 之前端性能优化

作者: 躺在家里干活 | 来源:发表于2019-10-09 10:23 被阅读0次

1.将css从js中提取出来,并且将无用的css去掉然后进行压缩

因为我用到了bootstrap,所以需要将bootstrap中无用的css去掉,如果用的是3.x的bootstrap可以下载定制版,这样可以减小包的大小,但是我用到的是4.x版本,没找到定制版所以下载了完整版。(这里我没有用npm下载到包依赖里,下面会解释原因)
首先下载所需的插件

npm install mini-css-extract-plugin purifycss-webpack purify-css optimize-css-assets-webpack-plugin cssnano glob-all --save-dev

配置webpack.config.js

//利用glob.sync实现多页面打包
const glob=require('glob-all');

//从js中提取css到单独的文件
const MinicssExtractPlugin = require('mini-css-extract-plugin');
//去掉无用的css
const purifycssWebpack = require('purifycss-webpack');
//压缩css
const OtimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');

plugins: HtmlWebpackPlugins.concat([ //配置插件
    // 提取css
    new MinicssExtractPlugin({
      filename: [name].[contenthash:8].css
    }),
    // css摇树,去除无用css:注意插件顺序:html文件生成 > css提取 > css摇树
    new purifycssWebpack({
      //此处的路径必须配置正确,我当初也是因为这个路径费了好大劲
     paths: glob.sync([ 
        path.join(__dirname,'src/*/index.html'),
        path.join(__dirname,'src/*/index.js'),
        path.join(__dirname,'static/js/*.js')
        //因为我将bootstrap.js放到了static/js/目录中,有一些动态的样式在js中,所以需要将js也包括进来
        //这里之所以不用npm引入bootstrap是怕这边路径配置不正确导致css样式不全
      ])
    }),
    // 压缩css
    new OtimizeCssAssetsPlugin({
      assetNameRegExp: /\.css$/g,
      cssProcessor: require('cssnano')//此处压缩css代码配合cssnao
    })
])

js

//这里之前尝试用min.css,但是min.css总是导致样式乱掉,具体原因不详,自我感觉可能是分号的问题,所以引入了bootstrap.css,反正打包时还会重新压缩
import 'static/css/bootstrap.css';
import 'static/css/index.css'

此处注意两点:
1.css摇树时路径配置必须准确
2.如果是引入第三方库不能引入压缩过的css(此项我仅验证了bootstrap 4.x)

2.引入jQuery

npm install jquery --save
const webpack = require('webpack');

module.exports = {
  resolve: {
    alias: { //别名
      'static': path.join(__dirname, 'static'),
      'jquery': 'jquery'
    }
  },
  plugins: [ //配置插件
    new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: "jquery",
      'window.jQuery': "jquery"
    })
  ]
}

3.echats等第三方库非常大

方法一:因为我只用到了简单的折线图和饼图所以只下载了这两个的定制版echarts.js
方法二:按需引入 ECharts 图表和组件 可以按需引入的模块列表

npm install echarts --save
// 引入 echarts 主模块
var echarts = require('echarts/lib/echarts');
// 引入折线图和饼图
require("./lib/chart/line");
require("./lib/chart/pie");
// 引入提示框
require('echarts/lib/component/tooltip');

方法三:使用了externals将第三方库以cdn的方式去引入

  • 在bootcdn上有echarts相关的cdn链接
  • 在html中引入echarts:<script src="//cdn.bootcss.com/echarts/3.2.2/echarts.simple.min.js"></script>
  • 在webpack中配置echarts
    在webpack.config.js文件内添加externals选项,和entry平级;
  externals: {
    echarts: 'echarts'
  },
  • 使用:
let myChart = echarts.init(this.$refs('myChart'));
myChart.setOption(option);

我的个人博客,有空来坐坐

相关文章

  • vue性能优化详解(二)

    前端路漫漫,优化无极限。本文主要从Webpack角度讲述vue性能优化。 1.Webpack 对图片进行压缩 如果...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Web 性能优化: 使用 Webpack 分离数据的正确方法

    摘要: Webpack骚操作。 原文:Web 性能优化: 使用 Webpack 分离数据的正确方法 作者:前端小智...

  • 前端性能优化(上)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 为什么要进行前端性能...

  • 重点掌握

    【前端性能优化汇总】【Webpack原理+React原理+Redux+React Router】【输入URL后发生...

  • 前端性能优化-webpack

    一、vueCli 查看打包后文件的大小占比 ⚠️vue-cli2 使用 webpack-bundle-analyz...

  • 性能优化+打包构建

    性能优化 webpack-bundle-analyzerwebpack构建优化webpack分包webpack g...

  • Chrome 性能监控 性能分析

    Chrome开发者工具之JavaScript内存分析 前端性能优化 —— 前端性能分析 Chrome DevToo...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

网友评论

      本文标题:webpack 之前端性能优化

      本文链接:https://www.haomeiwen.com/subject/dzghyctx.html