JQuery命名空间是一种好的实践吗?

6

请问是否有人能够解释一下,使用命名空间是否是一种良好的编码实践?为什么需要它?如果这是一种好的方法,为什么JQuery不默认包含它?需要一个单独的插件才能实现此功能。

我看到了这篇文章,其中提到了几种方法。文章中有人提到了内存泄漏的问题,这让人担忧。

最后,什么是组织JQuery库的最佳方式?

谢谢!


1
你不需要名称空间,只需要使用你最喜欢的模块加载器载入模块即可。 - Raynos
requireJS 定义了 require 关键字来加载模块和 define 关键字来定义模块。它使用 全局作用域。还有其他的模块加载器,你可以自己去找 ;) - Raynos
3个回答

20

注意:

  • 使用命名空间是一个好习惯,因为这样你就不太可能与其他脚本发生冲突。 这样,只有你的命名空间需要唯一,但是多个命名空间可以拥有相同的函数。
  • jQuery使用命名空间,而你不需要插件。 jQuery对象本身就是一个命名空间...jQuery中的任何函数都在jQuery对象中“命名空间化”。对于任何JavaScript对象都是如此。

回复Amir的评论:

YUI通过向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(如果你使用$作为jQuery()命名空间,则为$.fn)。


谢谢Levi的快速回复。你能解释一下第二点吗?jQuery没有像YUI(雅虎)库那样的命名空间。如果没有命名空间,如何组织jQuery库? - Amir
我知道你可以使用$.fn,但是jQuery文档提到:“不要在一个插件中使用超过一个命名空间来占用jQuery.fn对象。”这就是为什么我问什么是在jQuery中组织库的最佳方法? - Amir
你是正确的,参见http://docs.jquery.com/Plugins/Authoring#Plugin_Methods了解如何为你的特定插件命名空间。 - Levi Morrison

3

0

使用require.js是一种更好的实践方式,因为它不需要您不必要地向window对象添加对象。这也不意味着您必须担心先前的JavaScript文件的加载顺序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接