【问题标题】:Is JQuery namespace a good practice?JQuery 命名空间是一个好习惯吗?
【发布时间】:2023-03-21 23:07:01
【问题描述】:

谁能向我解释一下,如果使用命名空间是一种很好的编码习惯。为什么需要它?如果这是一个好方法,为什么 JQuery 默认不包含它。有一个单独的插件可以实现此功能。

我看到了这个post,其中提到了一些方法。有人在帖子中提到了内存泄漏,令人担忧。

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

谢谢,

【问题讨论】:

  • 您不需要命名空间,只需使用带有 <insert favourite module loader> 的模块即可
  • requireJS 定义 require 关键字来加载模块和 define 关键字来定义模块。您使用 zero 全局范围。还有其他的模块加载器,你自己去找吧;)

标签: jquery namespaces


【解决方案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 文件的加载顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      相关资源
      最近更新 更多