建立:
CommonJS和ES6的新功能。我知道对象实例和方法的静态容器之间的区别,但是我不确定它们分离到模块后的行为。所以我想知道返回实例之间有什么区别(此模式完全有效吗?):
// StateParser.js class StateParser { constructor() { } method1() { ... } } export default new StateParser()
并导出const方法:
// StateParser.js let state = { } export const method1 = () => { ... }
import { method1 } from '../utils/StateParser.js';
然后使用method1,好像它在本地存在?
因此,基本上我不确定何时将哪个用于我的实用程序类,并且会感谢您的输入。
每次导入A都会有一个新实例吗?
不,模块仅评估一次。
B的好处之一是可以使用对象分解功能,然后使用method1就像它存在于本地一样吗?
是的,尽管它不被称为“解构”。它们被 命名为imports (或模块的 exports ),并且它们不嵌套并且对别名使用不同的语法。
A的优点之一是能够在构造函数中初始化状态吗?
不。您也可以直接在模块范围内直接初始化模块状态,您不需要为此构造函数。
但是,是的,如果您在实例中具有状态,则最好使用一个可以 实例化多次 的类。为此,您当然需要导出类本身,而不是实例。
是export default new …模式都有效吗?
export default new …
不,由于上述原因,这是一种反模式。给定该类在其他地方都没有使用,它与匿名类antipattern 非常相似。无论如何,导出多个命名的导出要比默认导出对象好得多。