为什么命名导入会导致更慢的构建和更大的输出
Why do named imports cause slower builds and larger output?
我正在看material-ui文档,看到下面关于如何在ES6中正确导入的注释。
执行命名导入较慢并导致较大输出的技术原因是什么?
Notice that in the above example, we used:
import RaisedButton from 'material-ui/RaisedButton';
instead of
import {RaisedButton} from 'material-ui';
This will make your build process faster and your build output smaller. For a complete mapping of Material-UI components to import, see /index.js inside the Material-UI npm package root directory.
这还不足以让我们看到发生了什么。这是两件独立的事情。
-
默认导出通常要比属性导出大。
export default ObjectWithAllKindsOfStuff {} export function someFunction () { }
第二个会更小,几乎100%的情况下,如果它们在同一个文件中。
-
从
@angular/core
导入单个函数将需要打开更多的文件(花费更长的时间),而不是从@angular/a/b/c/d/e/f.js
导入所有内容。
如果你在根文件夹的index.js
,你是export * from './a'
,在那里,你是export * from './b'
,等等…然后对于WebPack或Rollup或其他,它必须加载下面的所有文件,以找出每个文件导出的内容,因此它可以告诉函数实际存在的位置。
他们的例子实际上是不公平的,在使用import { x } from 'package/SubPackage/SubSubPackage';
比import All from 'package/SubPackage/SubSubPackage';
会更小,但如果你import { x } from 'pacakge';
,它必须在每个文件夹,搜索通过所有的出口,找出哪些文件的函数,这就是比较他们让——它无关export {property} from
与export Namespace from
如果他们都谈论相同的文件,在同一个文件夹。
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 在JavaScript中输出转义字符
- 如何在DOM元素上按类型构建此函数
- 如何在jQuery中将函数的输出分配给变量
- Sencha Touch构建-排除文件
- RubyonRails——构建交互式接口应该朝哪个方向发展
- Webpack构建注释输出捆绑包
- 为什么使用 Webpack 和 Gulp 构建的输出包如此之大 (>1.9Mb)
- 在哪里放置JS“构建输出”
- 全栈应用程序Gulp构建的输出/路径/结构策略
- 使用流式JSON输出构建简单的nodejs API
- Ember构建输出(dist文件夹)
- Browserify-require()一个组合字符串不会将模块构建到输出脚本中
- 构建,修改,输出Javascript数组
- 用javascript构建带有输入复选框的html输出
- 从字符串构建RegExp时未能获得预期输出
- 为什么命名导入会导致更慢的构建和更大的输出
- Webpack构建更少的文件输出一个CSS最小化文件
- Gulp没有将文件输出到构建文件夹中的正确文件夹
- 如何在typescript文件位于'./src'时构建输出文件夹