JQuery 命名空间是一个好习惯吗?
Posted
技术标签:
【中文标题】JQuery 命名空间是一个好习惯吗?【英文标题】:Is JQuery namespace a good practice? 【发布时间】:2011-09-26 03:07:28 【问题描述】:谁能向我解释一下,如果使用命名空间是一种很好的编码习惯。为什么需要它?如果这是一个好方法,为什么 JQuery 默认不包含它。有一个单独的插件可以实现此功能。
我看到了这个post,其中提到了一些方法。有人在帖子中提到了内存泄漏,令人担忧。
最后,组织 JQuery 库的最佳方式是什么?
谢谢,
【问题讨论】:
您不需要命名空间,只需使用带有<insert favourite module loader>
的模块即可
requireJS
定义 require
关键字来加载模块和 define
关键字来定义模块。您使用 zero 全局范围。还有其他的模块加载器,你自己去找吧;)
【参考方案1】:
注意事项:
命名空间是一种很好的做法,因为您与其他脚本的名称发生冲突的可能性较小。这样,只有您的命名空间必须是唯一的,但多个命名空间可以在其中具有相同的功能. jQuery 使用命名空间,您不需要插件。 jQuery 对象本身就是一个命名空间。 . . jQuery 中的任何函数在 jQuery 对象中都是“名称间隔的”。这适用于任何 javascript 对象。回应阿米尔的评论:
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
(或 $.fn
,如果您将 $
用于 jQuery() 命名空间。
【讨论】:
感谢 Levi 的快速回复。你能给我解释一下第二点吗? jQuery 没有作为 YUI (yahoo) 库的命名空间。如何在没有命名空间/的情况下组织 jQuery 库/ 我知道您可以使用 $.fn 但 jQuery 文档提到:“不要让每个插件使用多个命名空间来混淆 jQuery.fn 对象。”这就是为什么我要问什么是在 jQuery 中组织库的最佳方式是什么? 您是对的,请参阅docs.jquery.com/Plugins/Authoring#Plugin_Methods 了解如何为您的特定插件命名空间。【参考方案2】:Re:组织 jQuery 库的最佳方法,您应该从阅读 jquery.com 上的插件创作文章开始:
http://docs.jquery.com/Plugins/Authoring
【讨论】:
【参考方案3】:require.js 是一种更好的做法,因为它不需要您将对象添加到窗口对象上。这也不意味着您不必担心以前的 javascript 文件的加载顺序。
【讨论】:
以上是关于JQuery 命名空间是一个好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章