我正在使用webpack来传输/捆绑/等我的js文件。我使用导入/导出语法(与require和export.module的CommonJS方式相反)。这意味着如果我需要在特定脚本的上下文中使用它们,我需要多次导入它的每个类及其所有子类。
问题:
即使js本身支持类,为什么我们需要一直导入它们?如果(并且我只在课堂上发言)它们可用于所有范围,那会不会更容易?
编辑:为了避免污染全局范围,可以执行类似global.myLibs的操作并完成该问题。我个人在我的课程前面添加了一些独特的东西,但这种方法甚至可以用于那些我认为不会的东西。
例如:
window.myClasses
可以作为我所有课程的容器。我来自一个iOS背景,其中所有的主要"捆绑",在java中我认为这将是一个"包"每个人都可以使用。重新导入类本身似乎没有任何用途。
见这里: Why do i need to import modules everytime in webpack bundle?
答案 0 :(得分:0)
在全局范围内添加内容可能会导致命名冲突。如果您创建了一个名为Node
的类,通过window.Node = Node
将其添加到全局范围会怎样?您将丢失对浏览器的全局Node对象的引用。
您可以争辩说,您永远不会使用已经用于全局对象的名称。但现在,如果在一年左右的时间内,新的对象被添加到规范中,并且与您的一个对象同名,并且您想要将它与您自己的对象一起使用?您必须做出选择,或重命名您自己的对象。这不是未来的证明。
在使用它的每个模块中导入相同的模块是最佳做法。因为通过这样做,您永远不会污染全球范围。不要担心它会在你的最终捆绑中导入这个模块的代码n次。 Webpack只导入一次,然后在每次导入时使用对模块的引用。
请参阅以下资源: