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

时间:2015-02-21 01:19:14

标签: javascript oop amd commonjs

我来自古典的oop背景,并试图掌握新的js模块化系统。无论如何,我仍然需要经典的东西,如私有和公共方法和变量,继承,重载与高级模块调用和类初始化(如经典构造函数或其他东西)。所以在SO社区的帮助下,我制作了这个模块模式示例:

var MODULE = (function(self) {
   ...
})(SUPER_MODULE)

完整示例:http://jsfiddle.net/ehe122e0/10/

所以现在我试图掌握AMD和CommonJS模块。有人可以将这个例子(我的意思是完整的jsfiddle例子)翻译成AMD和/或CommonJS吗?这真的很有帮助。

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

2 个答案:

答案 0 :(得分:1)

我所能说的只是阅读,阅读,阅读,然后阅读更多。这是一个好的开始:

“编写模块化Javascript”作者:Addy Osmani: http://addyosmani.com/writing-modular-js/

Kris Zyp的“AMD The Definite Source”: http://www.sitepen.com/blog/2012/06/25/amd-the-definitive-source/

RequireJS上的“为什么选择AMD”: http://requirejs.org/docs/whyamd.html

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

答案 1 :(得分:-2)

如果您只在客户端(浏览器)编写javascript代码,则无法使用常见的js。所以amd是要走的路!您需要amdefinerequirejs才能实现这一目标。

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

  

请注意,您在jsfiddle中为您的类提供的模式并不是一个非常好的模式。只有一个原因是你为每个实例复制了类的方法(对你的记忆不好)。请尝试使用power of the prototype代替!