【问题标题】:Is there an good reason to prefix all JavaScript modules with '$'?是否有充分的理由为所有 JavaScript 模块添加“$”前缀?
【发布时间】:2014-12-16 06:29:41
【问题描述】:

在我最近登陆的一个项目中,所有客户端代码都包含在显示模块中。这很好。所有模块名称都以'$'字符为前缀,例如

$.acme.global.dataAccess = function () {
    var dataAccess = {};

这些模块似乎都不是一个 jQuery 插件,所以我可以想象没有充分的理由这样做,但大部分代码都经过良好的架构和编写,所以我可能会遗漏一些基本的东西。

【问题讨论】:

  • $ 早在 jQuery 出现之前就被用作标识符。如果需要,请使用它。在 ECMAScript ed 3 中,它旨在保留给机器生成的代码。许多库忽略了该限制,并在 ES5 中删除。
  • 它只是一个简单的全局命名空间,使用众所周知的非常短的标识符?
  • 解释了herehere。请注意确定这是否是其中任何一个的纯副本,但我认为您会在那里找到解释的内容。
  • $ 不是 jquery 的特权。它只是一个命名空间标识符。
  • @RobG jQuery 正在被使用,这就是我所关心的。仅仅使用acme 也可以作为一个简单的全局命名空间。

标签: javascript conventions


【解决方案1】:

国际海事组织编号当然,它很方便,因为它很容易输入。

对于这个项目,我说继续使用它来保持一致性。但是……

我觉得问题是'$'和jquery之间有关联,所以肯定会出现混淆——比如这个。并且当使用 jquery 时,您将所有“acme”内容都添加到“jQuery”对象上;除非它与 jquery 有关,否则没有充分的理由。你会很好地创建一个新的命名空间。为什么不Acme.global.dataAccess?它甚至更短,并且不会立即混淆此模块是否处理 JQuery。

TLDR

  • 不,没有特别好的理由使用它
  • 可能会令人困惑
  • 它确实将代码添加到“jquery”对象上
  • 是的,您可以使用它并且......
  • 为了保持一致性,您应该继续在此项目中使用它
  • 这确实是一个偏好问题,但可以说是个坏主意

编辑:

TLDR II

缺点

  • 没有明显优势
  • 可能会被没有经验的人误认为是:
    • jQuery 依赖,或
    • 一个 jQuery 插件
  • 糟糕的组织实践 - 将代码添加到“jQuery”对象上
    • 喜欢捆绑无与伦比的袜子
  • 虽然这是完全合法的,但可以说是个坏主意

优点

  • 完全有效,在jquery之前使用过
  • 简短且易于输入
  • 让一些人感觉很时髦,比如 ke$ha

如果您有任何建议,请添加到列表中,如果您不同意,请点击我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多