当前位置: 首页 > 知识库问答 >
问题:

如何加载ES6模块分别(根据需要)aka.摇树?

於炯
2023-03-14

现在我正在浏览我的应用程序,更改此模式的实例:

import {Grid, Row, Col} from 'react-bootstrap'

进入:

import {Grid, Row, Col} from '../react-bootstrap'

其中react-bootstrap.html" target="_blank">js是我项目根目录下的一个简单文件,有选择地从NPM包中导入我需要的ES6模块:

import Grid  from 'react-bootstrap/es/Grid'
import Col   from 'react-bootstrap/es/Col'
import Row   from 'react-bootstrap/es/Row'

export {Grid, Col, Row}

通过对许多包执行此操作,我能够将捆绑包文件大小减少50%以上。

有没有一个WebPack模块或插件可以自动为任何包做这件事?

如果这个转换(即,只在包中包含显式导入的内容,而不是整个库)递归地应用于整个包树,我打赌我们会看到显著的大小差异。

编辑:正如Swivel所指出的,这被称为树抖动,应该由Webpack 3自动执行,其中包含在我正在使用的反应脚本的生产配置中。

我不确定这是否是这两个项目中的一个错误,但是我看到通过手动进行选择性导入可以获得很大的收益,如果执行摇树,情况就不应该是这样。

共有2个答案

茹高义
2023-03-14

无论是什么工具,都将等同于实现树摇动,并且它需要集成到您的bundler中。所以,没有。

为了记录在案,消除死代码与摇树并不是一回事。树抖动正在打破模块之间未使用的依赖关系。死代码消除在单个模块内。js一次只知道一个模块,所以它不能做树摇动:它只是消除死代码。因此,您使用的是UglifyJSPlugin,这一事实与您的构建环境是否存在树抖动无关。

严言
2023-03-14

我曾经搜索过这篇文章,找到了这篇文章。这很有帮助。我希望它对你有用。

 类似资料:
  • 问题内容: 我正在从https://github.com/moroshko/react- autosuggest 实现一个示例 重要代码如下: 该示例中的复制粘贴代码(有效)在我的项目中出现错误: 如果我删除前缀json !: 这样,我在编译时不会出错(导入已完成)。但是执行时出现错误: 如果我调试它,我可以看到郊区是一个对象,而不是一个数组,因此未定义过滤器功能。 但是在示例中,注释建议是一个数

  • 我正在寻找一种方法,根据需要添加字体。 我最初有4谷歌API字体选择从当我建立这个特定的网站。现在它已经长大了,我想把字体选择增加到9种。 我试图找到一种通过PHP实现的方法,但我是一名设计师,所以我的PHP是“呃”。 这是我所知道的php的“草稿”。 有人想尽快帮我吗? 然后在网页上显示这个。 此外,链接标签在字体名称之间需要一个|中间。。。我不知道怎么做。谷歌提供的所有这些文件的格式是 谢谢

  • 问题内容: 我正在使用express在Node.js中做一个项目。这是我的目录结构: 该目录包含许多与API相关的JS文件。我需要做的是建立一个挂钩系统,每当从快速HTTP服务器请求一个API函数时,它就会执行相应的API处理程序中指定的任何操作。这可能令人困惑,但希望您能理解。 Larry通过POST发送请求以获取用户详细信息。 服务器查找以查找与该请求关联的功能。 服务器执行操作并将数据发送回

  • 问题内容: 我使用sinon作为对nodejs(Hapijs)功能的单元测试。该函数在index.js中。我在我的测试文件中包含index.js作为 但是再次在index.js里面有要求 再次,library.js需要第三方功能 现在,当我在下面运行我的测试文件testfunc.js时 我收到以下错误 我想知道是否有任何方法可以对index.js的内部require库.stub进行存根(因为ind

  • 本文向大家介绍详解CommonJS和ES6模块循环加载处理的区别,包括了详解CommonJS和ES6模块循环加载处理的区别的使用技巧和注意事项,需要的朋友参考一下 CommonJS模块规范使用require语句导入模块,module.exports导出模块,输出的是值的拷贝,模块导入的也是输出值的拷贝,也就是说,一旦输出这个值,这个值在模块内部的变化是监听不到的。 ES6模块的规范是使用impor

  • 本文向大家介绍根据配置文件加载js依赖模块,包括了根据配置文件加载js依赖模块的使用技巧和注意事项,需要的朋友参考一下 要求: 根据下面的配置文件 写一个函数 def getfiles(name) 返回 加载某个name指定的页面,要加载的js文件列表,有依赖的要先加载 小菜解法     此题粗看起来很简单,实则不然。      难点在于依赖模块的加载时机。假如有这样的依赖关系:A-B&C、B-C