博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
demo10 关于JS Tree Shaking
阅读量:5982 次
发布时间:2019-06-20

本文共 1393 字,大约阅读时间需要 4 分钟。

1.什么是 tree shaking

借助于 es6 (es2015) 模块系统 (import 和 export) 的静态解析,webpack 能够利用 Tree Shaking 进行按需加载,移除掉没有被引用的模块,从而减少包的大小,缩小应用的加载时间,从而提高性能体验。

2.需配合 UglifyJSPlugin 来实现 tree shaking

UglifyJSPlugin 的作用在于删除未被引用代码以及压缩代码。

从 webpack 4 开始,只需将 "mode" 设置为 "production" 模式,即可开启 UglifyJSPlugin 的功能。

详情可参考官方 Tree Shaking 文档:

3.目录结构

// `--` 代表目录, `-` 代表文件  --demo10    --src      -app.js      -module.js    -webpack.config.js复制代码

module.js

export const sayHello1 = () => {  console.log('hello1');}export const sayHello2 = () => {  console.log('hello2');}export const sayHello3 = () => {  console.log('hello3');}复制代码

app.js

// 只导入了 sayHello1 ,观察打包后的 bundle 代码,移除了 sayHello2 和 sayHello3 的代码import { sayHello1 } from './module';sayHello1();复制代码

4.编写webpack配置文件

webpack.config.js

const path = require("path");module.exports = {  mode: "production" || "development", // tree shaking 需要使用 "production" 模式  entry: {    app: "./src/app.js"  },  output: {    publicPath: __dirname + "/dist/", // 打包后资源文件的引用会基于此路径    path: path.resolve(__dirname, "dist"), // 打包后的输出目录    filename: "[name].bundle.js"  }};复制代码

5.执行打包命令

(默认你已经安装了全局 webpack 以及 webpack-cli )

webpack复制代码

打包成功后,会在 demo08 目录下生成 dist/app.bundle.js

6.验证 tree shaking 是否生效

打开 app.bundle.js 文件,

发现查找不到 Hi I want to say hello2Hi I want to say hello3 ,

说明 Tree Shaking 生效了。

7.源码地址

demo 代码地址:

仓库代码地址(及目录):

参考文档:

转载于:https://juejin.im/post/5ce8eecde51d455070226f19

你可能感兴趣的文章
《JavaScript高级程序设计》读书笔记(十):本地对象Date
查看>>
linux中fork()函数详解
查看>>
从1G到5G,46年屏幕变迁下,富士康、苹果、三星、华为的浴火重生路 ...
查看>>
##II 第四单元##管理系统中的简单分区和文件系统
查看>>
用flash测试你的ircd
查看>>
白话红黑树系列之二——红黑树的构建
查看>>
客户的一张表中出现重复数据,而该列由唯一键约束,重复值如何产生的呢?...
查看>>
MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
查看>>
OnePlus安装Kali-NetHunter
查看>>
[Oracle][DataGuard]Standby数据库文件有损坏时的处理方法
查看>>
JavaScript:Array 对象
查看>>
PDFCreator:一款免费,开源的PDF(Tiff,pcx,png,jpeg,bmp,PS,EPS)打印机(VB,GPL),并提供了COM接口,方便使用各种编程语言调用...
查看>>
Note 1773479 - SYB: Displaying multiple triggers per object
查看>>
联手云计算核心技术开发,BoCloud与中科院软件所战略合作
查看>>
2017年背景下的SSD选购技巧有哪些变化?
查看>>
2016年的数据存储和管理的成本将何去何从?
查看>>
Airpods 并非无用,而是苹果借助语音交互布局物联网的新“棋子”
查看>>
项目总结:数据迁移测试
查看>>
SQL中存储过程的创建和使用
查看>>
荷兰政府:保证不强制在任何产品中留有后门
查看>>