我和我的同事争论不休,我们似乎无法从任何官方来源(MDN,Webpack文档等)找到答案。我的研究也hasn't yielded much。 even when it comes to importing似乎也有疑问。
我们的设置是Webpack,Babel和一个典型的React / Redux应用程序。举个例子:
export * from './actions';
export * from './selectors';
export * from './reducer';
export { default } from './reducer';
这使我可以将Redux模块分成逻辑部分,从而使代码更易于阅读和维护。
但是,我的一些同事认为export * from
实际上可能通过诱骗webpack
的摇树能力来欺骗actions$
实际上只是被重新出口。
所以我的问题是,是否有任何事实证明或反对这一事实?
答案 0 :(得分:2)
我们相信
export * from
可能会欺骗Webpack,因为它欺骗了人们以为实际上只是在重新导出时使用了导出。
否,导入/导出声明除了设置导出变量的别名外不做任何事情,它们不算作“使用”。考虑到它们的语义,任何捆绑器都会对其进行专门跟踪,并且不会对树的摇动产生不利影响。
甚至没有正确完成的重命名别名也不会破坏这一点:
export { X as Y } from '…';
import { X as Y } from '…';
export { Y }
import { X } from '…';
export { X as Y }
但是语句中的用法将被视为用法并中断(非复杂性)优化:
import { X } from '…';
export const Y = X; // avoid!
所以我的问题是,是否有任何事实证明或反对这一事实?
您可以尝试一下并查看其工作原理。