2011-06-30 60 views
6

任何人都可以向我解释,如果使用命名空间是一个很好的编码习惯。为什么它需要?如果这是一个很好的方法,为什么JQuery没有默认包含它。有一个单独的插件允许此功能。JQuery命名空间是一种很好的做法吗?

我看到这个post,提到几种方法来做到这一点。有人提到有关令人担忧的帖子中的内存泄漏问题。

最后,组织JQuery库的最好方法是什么?

感谢,

+1

你不需要命名空间,只需要将模块与你的'' – Raynos

+0

什么是模块加载器? – Amir

+0

['requireJS'](http://requirejs.org/)定义了'require'关键字来加载一个模块,'define'关键字定义一个。您使用_zero_全球范围。还有其他模块装载机,请自己去找它们;) – Raynos

回答

20

注:

  • 命名空间是一个很好的做法,因为你有较少的有冲突的名字与其他脚本的机会。这样,只有您的名称空间必须是唯一的,但多个名称空间可以具有相同的功能。
  • jQuery DOES使用命名空间,而且你不需要插件。 jQuery对象本身是一个名称空间。 。 。 jQuery中的任何函数都是jQuery对象中的'name-spaced'。对于任何JavaScript对象都是如此。

响应于阿米尔的评论:

锐通过将变量到YUI对象,其中所添加的变量也是一个对象实现命名空间。他们的命名空间函数只是为你构建它。

var lib = { 
    util:{}, 
    widget:{}, 
    tool:{} 
}; 

//creates a function named reset in the lib.util namespace 
lib.util.reset = function() {}; 

//creates a function named reset in the lib.widget namespace 
lib.widget.reset = function() {}; 

在jQuery中,你将它添加到jQuery.fn(或$.fn如果使用$的jQuery()命名空间

+0

感谢Levi的快速响应。你能向我解释第二点吗? jQuery没有YUI(雅虎)库的命名空间。如何组织没有命名空间/ – Amir

+0

@Amir的jQuery库,更新了我的答案。 –

+0

我明白,你可以使用$ .fn但jQuery的文件提到: “不要每个插件的多个命名空间杂乱jQuery.fn对象。” 这就是为什么我在问什么是最好的方式在jQuery中组织图书馆? – Amir

0

require.js是一个更好的做法,因为它不要求你添加对象到窗口对象不必要也。并不意味着你必须担心以前的JavaScript文件的加载顺序。

相关问题