Javascript 将模块化模式示例转换为CommonJS或AMD

Javascript 将模块化模式示例转换为CommonJS或AMD,javascript,oop,amd,commonjs,Javascript,Oop,Amd,Commonjs,我来自一个经典的oop背景,试图掌握新的js模块化系统。无论如何,我仍然需要一些经典的东西,比如私有和公共方法和变量、继承、带有高级模块调用的重载和类初始化,比如经典构造函数之类的东西。因此,在So社区的帮助下,我制作了以下模块模式示例: var MODULE = (function(self) { ... })(SUPER_MODULE) 完整示例: 所以现在我正试图掌握AMD和CommonJS模块。有人能把这个例子翻译成AMD和/或CommonJS吗?这真的很有帮助 我上面提到的使用

我来自一个经典的oop背景,试图掌握新的js模块化系统。无论如何,我仍然需要一些经典的东西,比如私有和公共方法和变量、继承、带有高级模块调用的重载和类初始化,比如经典构造函数之类的东西。因此,在So社区的帮助下,我制作了以下模块模式示例:

var MODULE = (function(self) {
   ...
})(SUPER_MODULE)
完整示例:

所以现在我正试图掌握AMD和CommonJS模块。有人能把这个例子翻译成AMD和/或CommonJS吗?这真的很有帮助


我上面提到的使用这些格式的功能的任何工作示例都是有用的。

我所能说的就是读,读,读,然后再读一些。这是一个好的开始:

Addy Osmani编写模块化Javascript:

AMD由Kris Zyp确定的来源:

为什么在RequireJS上使用AMD:


还有很多,但在模块化的道路上你会遇到它,祝你好运:

如果你只在客户端浏览器上编写javascript,你将无法使用普通的js。所以amd是一条路要走!你将需要和实现这个目标

但是,如果您在服务器端使用javascript,您将面临一些常见的js。在这种情况下,我建议您使用一个真正的javascript OOP框架,能够加载常见的js和amd模块,以便在客户端和服务器端使用您的类。例如,您可以尝试,它将为您抽象出这种复杂性

请注意,您在JSFIDLE中为类提供的模式不是一个真正好的模式。其中一个原因是,您为每个实例复制了类的方法,这对您的内存有害。试着用这个来代替


看起来更像是两个问题,你问的是关于经典类的问题,不管它是如何公开的,都是一样的,例如global,commonjs,amd,system。然后你同时询问OO和模块系统,这使得它变得模棱两可。你能把这句话换成一个明确的、可回答的问题吗?我不想标记它,因为你在它上面放了一笔赏金,但它现在真的很模糊。完成了。你觉得现在好点了吗?如果还不行的话。你能提出一个修改建议,让我明白你的意思吗谢谢你的帮助好吧,那更好,我稍后会继续回答。common js只是你的模块,全局模块的导出属性设置为你称之为self的属性。实际上我有一个比这个例子更早的版本。这一个:但是我发现这些方法也是重复的,这是一种更冗长的做事方式。我稍后会尝试增强它。您能告诉我如何将它改为使用原型吗?我只是为您的上一个类操作做的,这是JSFIDLE。但是,您是对的,您当然应该使用amd模块将类的实现分离到不同的文件中。这将产生一个更好更干净的代码。我想我理解你的意思。使用此调用/原型方案,模块/对象不会在较低的类中重复此功能。但我认为最好在模块模式示例中尝试这样做,你不这样认为吗?有人在这里告诉我,这个Object.create是一种老方法,模块化模式和AMD是一种更好的方法。因此,我认为最好的方法是AMD与呼叫/原型?是吗?事实上我已经用AMD做了一些测试。此处:。在我的机器中,模块是文件分隔的。我必须这样做才能适应JSFIDLE。如果我把它转换成使用原型,你认为我们能认为它是最好的方法吗?当然,你可以做到这两个。这就是我在回答中告诉你们的框架中的实现方式。你可以看看这个文件。然后,在一个随机文件中使用扩展函数,如。AMD和原型遗传做不同的事情。一个不能代替另一个。AMD主要是以逻辑和异步方式加载依赖项,而不是任何OOP继承。