The way of Webpack learning (V.) -- css和js的tree shaking

一:基本概念

1、字面意思是摇树,一句话:项目中没有使用的代码会在打包时候丢掉。分为css的tree shaking和js的tree shaking。

2、使用场景:1)常规优化。2)使用第三方库,但是只使用了部分功能。

二:JS tree shaking

在webpack4中已经移除了UglifyJsPlugin,只需要配置mode"production",即可显式激活 UglifyjsWebpackPlugin 插件。

下面说的是webpack3.10.0的实现方法:

(1)常规业务的tree shaking

1、webpack.config.js配置

const path = require(‘path‘);
var webpack = require(‘webpack‘);

module.exports = {
    entry:{
        app:‘./src/app.js‘
    },
    output:{
        path:path.resolve(__dirname,‘dist‘),
        publicPath:‘./dist/‘,//设置引入路径在相对路径
        filename:‘[name].bundle.js‘,

    },
    plugins:[
        new webpack.optimize.UglifyJsPlugin({
            test: /\.js($|\?)/i
        })
    ]
}

2、其他js文件配置

//a.js
import {a} from ‘./common‘;
a();

//common.js
var a = function(){
    console.log(‘a‘)
}
var b = function(){
    console.log(‘b‘)
}
var c = function(){
    console.log(‘c‘)
}
export {a,b,c}

打包成功后,会发现打包文件只有a函数,删除掉了b和c函数。这就代表JS的tree shaking成功了。

(2)第三方库的tree shaking

不使用lodash插件,安装库对应的模块系统即可。

$ npm i lodash-es --save-dev

// app.js
import { chunk } from "lodash-es";
console.log(chunk([1, 2, 3], 2));

备注:如果lodash不支持tree shaking,这个比较特殊。面对这种特殊情况,可以安装babel插件转化lodash。

三:css的tree shaking

以去除项目代码中用不到的 CSS 样式,仅保留被使用的样式代码。

// webpack.config.js
const path = require("path");
const PurifyCSS = require("purifycss-webpack");
const glob = require("glob-all");//glob-all 的作用就是帮助 PurifyCSS 进行路径处理,定位要做 Tree Shaking 的路径文件。

let purifyCSS = new PurifyCSS({
  paths: glob.sync([
    // 要做CSS Tree Shaking的路径文件
    path.resolve(__dirname, "./*.html"), // 请注意,我们同样需要对 html 文件进行 tree shaking
    path.resolve(__dirname, "./src/*.js")
  ])
});

  

  

原文地址:https://www.cnblogs.com/weihuan/p/9642784.html

时间: 2024-10-08 22:07:06

The way of Webpack learning (V.) -- css和js的tree shaking的相关文章

webpack4 系列教程(八): CSS Tree Shaking

教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 课程介绍和资料 本次课程的代码目录(如下图所示): >>> 本节课源码 >>> 所有课程源码 1. CSS 也有 Tree Shaking? 是滴,随着 webpack 的兴起,css 也可以进行 Tree Shaking: 以去除项目代码中用不到的 CSS 样式,仅保留被使用的样式代码. 为了方便理解 Tree Shaking 概念,并且与 JS

A Statistical View of Deep Learning (V): Generalisation and Regularisation

A Statistical View of Deep Learning (V): Generalisation and Regularisation We now routinely build complex, highly-parameterised models in an effort to address the complexities of modern data sets. We design our models so that they have enough 'capaci

css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version=)

1 <span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version= ) 2 3 <script type=”text/javascript” src=”jb51.js?version=1.2.6″></script> 4 <link rel=’stylesheet’ href=’base.css?version=2.3.3′ type=’

css和js带参数v或version

1 <span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version= ) 2 3 <script type=”text/javascript” src=”jb51.js?version=1.2.6″></script> 4 <link rel=’stylesheet’ href=’base.css?version=2.3.3′ type=’

css与js后边有?v=20160101

原文地址http://blog.csdn.net/zanychou/article/details/8813076 <span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version= ) <script type=”text/javascript” src=”jb51.js?version=1.2.6″></script> <link rel

webpack教程(四)——css的加载

首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css-loader加载css文件,再用style-loader添加在页面中 在app目录下创建component.css文件 body{ background-color: red; } 在app/index.js中引入css文件 运行npm run start命令. 可以看到我们浏览器整个背景都变成了红

webpack配置:css文件打包和JS压缩打包

一.CSS文件打包 1.在src下新建css文件,在css文件下新建index.css文件,输入以下代码 body{ color:red; font-size:20px; } 2.css建立好后,需要引入到入口文件,这里我们引入到index.js中 import css from './css/index.css'; document.write("It works."); 3.在终端安装style-loader和css-loader 4.安装好后,我们开始在webpack.confi

用javascript预加载图片、css、js的方法研究

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提升用户体验.在用到一些大图片展示的时候,预加载大图是很不错的方法,图片更快的被呈现给用户.不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果. 先说需要知道的服务器返回的status code:status-code: 200 - 客户端请求成功status-code: 304 -

asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中并且将大的CSS文件分割到小文件 中,当一个浏览器请求那些JS以及CSS文件,它却将为每一个文件产生一个请求.每一个HTTP请求将导致从你的浏览器到服务器上的一次"往返",从响应 服务器到客户端浏览器之间的等待时间称之为"延时".因此,如果你有四个JS文件以及三个CSS