javascript - 显式导入与 * 登录 javascript
问题描述
这样做有什么意义
import * as copy from 'copy-to-clipboard';
相对
import { someMethod } from 'copy-to-clipboard';
它会影响性能或捆绑包大小吗?我更喜欢第二个,它看起来更干净。
解决方案
使用第二种形式允许像 Webpack 这样的打包工具使用称为“摇树”的过程来优化你的包大小。
Tree Shaking 是 JavaScript 上下文中常用的一个术语,用于消除死代码。它依赖于 ES2015 模块语法的静态结构,即导入和导出。名称和概念已被 ES2015 模块捆绑器汇总推广。
取自https://webpack.js.org/guides/tree-shaking/
假设您有一个这样的库模块:
// my-module.js
export const foo = function () { ... };
export const bar = function () { ... };
export const baz = function () { ... };
然后,如果您按如下方式使用foo()
in file.js
,Webpack 将识别出您不需要bar()
并且baz()
不会在捆绑包中发出它们,从而减少通过网络发送的字节数,从而可以加快网站的加载速度。
import { foo } from 'my-module';
foo();
推荐阅读
- kotlin - Kotlin 数据类:用作改造响应时成员未初始化
- reactjs - React 将 dom 节点作为输入传递给另一个组件
- performance - 如何使用 jmeter+influxDB+Grafana Stack 在 grafana 中生成“连接时间随时间变化”图?
- phpstorm - Xdebug 已安装,但似乎无法与 PhpStorm 一起使用
- sockets - 为什么 UDP writer 拨号?
- python - JupyterLab vs. JupyterNotebook 以及如何快速编辑代码
- c++ - 如何在 C++ 中有条件地包含标头?
- laravel - 如何构建后端以最小化所需的 axios 调用数量
- python - MySQL不会从python更新
- generics - 为什么在 Rust 中使用泛型类型引用时必须指定生命周期?