什么是javascript文件名命名约定?

What is the javascript filename naming convention?

文件应该命名为something-with-hyphens.js、camelcased.js还是其他名称?

我在这里找不到这个问题的答案。


一种可能的命名约定是使用类似于jquery使用的命名方案的东西。它并不是被普遍采用的,但很普遍。

1
product-name.plugin-ver.sion.filetype.js

其中,product-nameplugin对还可以表示名称空间和模块。versionfiletype通常是可选的。

filetype可以是与文件内容相关的内容。经常看到的是:

  • min用于小型文件
  • 用于自定义生成或修改文件的custom

实例:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • 20


我不知道JavaScript文件的任何特定约定,因为它们在Web上与CSS文件、HTML文件或类似的任何其他类型的文件都不是唯一的。您可以做一些"安全"的事情,以减少意外遇到跨平台问题的可能性:

  • 使用所有小写文件名。有些操作系统对文件名不区分大小写,使用全小写字母可以防止无意中使用两个不同的文件,仅在某些操作系统可能无法工作时才使用。
  • 不要在文件名中使用空格。虽然从技术上讲这是可行的,但文件名中的空格可能导致问题的原因很多。
  • 连字符可以用作单词分隔符。如果您想对多个单词使用某种分隔符,而不是像various-scripts.js中那样使用空格或骆驼壳,则连字符是一种安全、有用且常用的分隔符。
  • 考虑在文件名中使用版本号。当您想要升级脚本时,请计划浏览器或cdn缓存的效果。在升级JS文件时,最简单的方法是在部署的文件名或路径中包含版本号(如jquery使用jquery-1.6.2.js),然后在升级/更改文件时对该版本号进行通气/更改。这将保证请求较新版本的页面不会从缓存中得到较旧版本的服务。

  • 没有正式的、通用的、用于命名javascript文件的约定。

    有多种选择:

    • scriptName.js
    • script-name.js
    • script_name.js

    是否都是有效的命名约定,但是我更喜欢jquery建议的命名约定(对于jquery插件,尽管它适用于任何JS)

    • jquery.pluginname.js

    这个命名约定的好处在于它明确地描述了正在添加的全球名称空间污染。

    • foo.js加上window.foo
    • foo.bar.js加上window.foo.bar

    因为我省略了版本控制:它应该在全名之后,最好用连字符分隔,在主要版本和次要版本之间有句点:

    • foo-1.2.1.js
    • foo-1.2.2.js
    • foo-2.1.24.js


    您给出的链接中的问题讨论的是JavaScript变量的命名,而不是文件命名,因此对于您提出问题的上下文,请忽略这一点。

    至于文件命名,这纯粹是一个偏好和品味的问题。我喜欢用连字符命名文件,因为这样我就不必像处理camelcase文件名那样使用shift键;也不必担心Windows和Linux文件名之间的差异(至少通过xp,Windows文件名不区分大小写)。

    所以,像很多人一样,答案是"视情况而定"或"由你决定"。

    您应该遵循的一条规则是在您选择的约定中保持一致。


    我通常喜欢使用小写的连字符,但有一点还没有提到,有时候让文件名与包含在其中的单个模块或可实例化函数的名称完全匹配是很好的。

    例如,我在自己的名为knockoutilitymodule.js的文件中使用var knockoutUtilityModule = function() {...}声明了一个暴露模块,尽管客观上我更喜欢knockout-utility-module.js。

    同样,由于我使用绑定机制来组合脚本,我已经开始在各自的文件中定义可实例化的函数(模板化视图模型等),以实现可维护性。例如,productDescriptorViewModel独立于productDescriptorViewModel.js内部(我对可实例化函数使用大写)。