使用 browserify 时 closures/module 模式是否已过时?
Are closures/module pattern obsolete when using browserify?
我在编写前端代码时一直在使用模块模式,这些前端代码在提供给客户端之前会经过浏览器化。从我一直在阅读的内容来看,Browserify 似乎将不同的文件及其各自的代码放在自己的闭包中,以模拟节点样式的模块分离。这是否意味着当我使用 Browserify 时它违背了 closures/the 模块模式的目的?如果是这种情况,似乎使用模块模式并将我的代码包装到一个闭包中,然后将其存储在另一个闭包中,这可能是一种不必要的并且会降低性能的模式。在编写将使用 Browserify 编译的模块时,我应该以不同的方式对待代码吗?
Should I treat code differently when writing modules that will be compiled with Browserify?
没有。但是当你 编写模块 ,即 JavaScript 被解释为 CommonJS 或 ES6 模块的文件时,你不应该使用模块模式(IIFE)。模块已经有自己的作用域,您需要做的就是使用 module.exports
或 export
声明。
另见 Namespacing with IIFE in ES6?。
我在编写前端代码时一直在使用模块模式,这些前端代码在提供给客户端之前会经过浏览器化。从我一直在阅读的内容来看,Browserify 似乎将不同的文件及其各自的代码放在自己的闭包中,以模拟节点样式的模块分离。这是否意味着当我使用 Browserify 时它违背了 closures/the 模块模式的目的?如果是这种情况,似乎使用模块模式并将我的代码包装到一个闭包中,然后将其存储在另一个闭包中,这可能是一种不必要的并且会降低性能的模式。在编写将使用 Browserify 编译的模块时,我应该以不同的方式对待代码吗?
Should I treat code differently when writing modules that will be compiled with Browserify?
没有。但是当你 编写模块 ,即 JavaScript 被解释为 CommonJS 或 ES6 模块的文件时,你不应该使用模块模式(IIFE)。模块已经有自己的作用域,您需要做的就是使用 module.exports
或 export
声明。
另见 Namespacing with IIFE in ES6?。