原创翻译,转载请注明出处。
原文地址:https://webpack.js.org/guides/tree-shaking/
Tree shaking是一个术语,通常用于JavaScript的上下文来消除没有作用的代码,或者精确讲,保留有用代码。它依赖于ES2015中针对于其模块系统里静态构造的引入/导出。它的名字和概念由ES2015模块打包器rollup而广为人知。
Webpack2对ES2015模块提供了一个内置的支持,用来检测对未使用模块的导出。
例子
假设一个maths.js库文件导出两个函数,square和cube:
// This function isn't used anywhere exportfunctionsquare(x){ return x * x; } // This function gets included exportfunctioncube(x){ return x * x * x; }
在我们的main.js里我们只导入cube:
import{cube}from'./maths.js'; console.log(cube(5));// 125
运行node_modules/.bin/webpack main.js dist.js,然后查看dist.js发现square并没有被导出。
/* ... webpackBootstrap ... */ /******/([ /* 0 */ /***/(function(module, __webpack_exports__, __webpack_require__){ "use strict"; /* unused harmony export square */ /* harmony export (immutable) */ __webpack_exports__["a"]= cube; // This function isn't used anywhere functionsquare(x){ return x * x; } // This function gets included functioncube(x){ return x * x * x; } /***/}), /* 1 */ /***/(function(module, __webpack_exports__, __webpack_require__){ "use strict"; Object.defineProperty(__webpack_exports__,"__esModule",{ value:true}); /* harmony import */var __WEBPACK_IMPORTED_MODULE_0__maths_js__ =__webpack_require__(0); console.log(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__maths_js__["a"/* cube */])(5));// 125 /***/})
当运行产品编译时运行node_modules/.bin/webpack --optimize-minimize main.js dist.min.js,只有cube的压缩版,而square在编译中没有被保留。
/* ... */ function(e,t,n){"use strict";functionr(e){return e*e*e}t.a=r} /* ... */ function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);console.log(n.i(r.a)(5))}
链接
Tree shaking with webpack 2, TypeScript and Babel
Tree-shaking with webpack 2 and Babel 6
webpack 2 Tree Shaking Configuration
-- End --
相关推荐
- **错误排查**: 查阅Webpack官方文档或社区资源寻找解决方案。 - **优化策略**: 如代码拆分、缓存机制等提升构建速度。 #### 三、Webpack进阶 - **模块化标准**: - **CommonJS**: 节点环境的模块化标准。 - *...
- **官方文档**:[Webpack官网](https://webpack.js.org/) - **中文指南**:[Webpack中文指南](https://zhcn.webpack.js.org/) - **社区资源**:GitHub、Stack Overflow等社区讨论。 ### 结语 Webpack作为一个强大...
10. **性能优化**: 包括代码分割、懒加载、Tree Shaking等技术,减少页面加载时间和体积。 11. **开发服务器**: 提供了一个内置的HTTP服务器,用于本地开发和测试,可能还支持跨域配置和自动刷新。 12. **插件系统...
9. **性能提升**:Webpack 5 提供了更好的性能优化,比如零配置的 Tree Shaking(移除未使用的代码),这得益于对 ES 模块更好的支持。此外,更大的块大小限制允许更少的 HTTP 请求,从而提高页面加载速度。 10. **...
### Webpack2 中文文档概览 #### Webpack 概述 Webpack 是一款现代前端项目的模块打包工具。它能够将项目中的多个独立模块按照依赖关系和规则打包成适合生产环境部署的静态资源,并且支持按需加载的代码分割功能。...
2. **Tree Shaking**:移除未使用的代码,减小程序体积。 3. **Source Maps**:在开发阶段提供源码映射,方便调试。 4. **热模块替换(Hot Module Replacement)**:在不刷新页面的情况下更新模块,加快开发速度。 5...
**tree shaking**:Webpack 的一项优化技术,用于移除未使用的JavaScript代码,基于 ES6 模块的静态性质实现,有助于减小生产环境的代码体积。 **Source Maps**:Source Maps 可以帮助开发者在浏览器的开发者工具中...
4. **优化(Optimization)**:插件开始工作,进行各种优化,如代码分割、tree shaking、最小化等。 5. **输出(Output)**:Webpack 打包所有处理过的模块,并根据配置输出到指定目录。 在“webpack课程.doc”中,你...
Webpack 是一个现代JavaScript应用程序的静态模块打包工具。它在开发过程中扮演着重要...通过阅读提供的"xmind"文档,你将获得更详细的Webpack指南,包括概念解析、功能介绍和实例演示,进一步提升你的Webpack技能。
Webpack 4 引入了新的性能优化功能,如 Tree Shaking、Module Federation 等,需要根据项目需求调整相关配置。 总的来说,从 Webpack 1.x 升级到 4.x 需要对配置进行一系列调整,包括 Loader、模块处理、插件升级...
- **官方文档**: Vue.js 官方文档是最权威的学习资源,提供了详尽的指南和 API 参考。 - **教程视频**: 许多在线平台提供免费或付费的 Vue.js 教程视频,适合不同水平的学习者。 - **在线课程**: Udemy、Coursera...
- 项目可能利用Tree Shaking、Code Splitting等Webpack特性减少代码体积,提高加载速度。 - 对于图片和字体,可能使用Webpack的Asset Modules或单独的图片优化工具进行压缩。 综上所述,"meedu后台的前端项目.zip...
6. **前端性能优化**:包括代码分割、懒加载、Tree Shaking、预渲染等技术,提升用户体验。 7. **跨域解决方案**:如JSONP、CORS、代理服务器等,处理浏览器同源策略限制。 8. **ES6+语法**:现代JavaScript的新特性...
Webpack 提供多种性能优化策略,如代码分割(Code Splitting)、Tree Shaking(移除未使用的代码)、异步加载(Async Loading)等,这些都能减少打包后的文件大小。 ### 9. README.txt 文件 在实际项目中,`README....
13. **打包优化**:通过Tree Shaking、Code Splitting等方式减少生产环境的代码大小。 14. **部署配置**:提供简单的部署指南,包括如何配置服务器和CDN。 15. **文档**:可能附带详细的文档,指导开发者如何使用...
7. **性能优化**:前端库可能包括各种性能优化技术,如懒加载、代码分割、预渲染、tree shaking等,这些技术可以提高应用的加载速度和运行效率。 8. **测试和调试**:keanu可能包含测试工具和调试工具,比如Jest、...
9. **性能优化**:利用Webpack或Rollup进行代码打包和优化,如代码分割、Tree Shaking等,提高加载速度。 10. **安全**:遵循OWASP JavaScript Top 10,避免常见的安全风险,如XSS、CSRF等,并使用 ESLint 的 ...
4. **插件(Plugins)**:插件则执行更复杂的任务,如 Tree Shaking(去除未使用的代码)、提取 CSS 到单独文件、优化图片等。在创建库时,你可能需要 `TerserPlugin` 进行代码压缩,或者 `MiniCssExtractPlugin` ...
- 性能优化:懒加载、代码分割、Tree Shaking、首屏加载优化等。 为了深入了解和运行此项目,你需要具备基本的JavaScript知识,熟悉HTML和CSS,以及一定的Git和GitHub操作经验。如果你计划进行贡献或自定义,还需要...