ReactJS是否重用导入的包?
假设我有一个名为DisplayItems.js和EditItem.js的文件。它们都导入App.js.
如果我在DisplayItem.js文件(import axios from 'axios';
)的顶部导入一个包(比如axios),并且我也在我的EditItem.js文件中导入它,我的应用程序是否增长了13kb或26kb(假设axios是13kb)?
答案 0 :(得分:7)
此行为不是由React控制,而是由任何构建工具编译并将import
语句捆绑到浏览器的JavaScript文件中。
Create React App模板目前使用Webpack作为其构建工具。 Webpack避免重复多次导入的代码;它只写一次定义。如果您为React应用程序使用不同的项目设置,则您的项目可能会使用不同的构建工具。
答案 1 :(得分:0)
在回应jhpratt时,我确实想过自己测试一下,但我知道这需要一些时间(约34分钟)。
这是测试结果。
导入jQuery
2742120(控件) - 使用jquery导入一次
2742353 - 使用jquery导入两次(233字节差异,.2kb)
2741887 - 未导入jquery(233字节差异,.2kb)
导入modal-vanilla
2742120(对照) - 模态香草一次导入
2742406 - 模态 - 香草导入两次(差别为286字节,.3kb)
2712501 - 未导入模态 - 香草(29386字节差异,29.3kb)
我不确定jQuery会发生什么(也许我在项目的其他地方添加了它?),但它确实看起来像是重用了包(至少在这个例子中)。
万一有人想知道,我正在使用Laravel的React设置。