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

文件应该被命名为带有连字符的东西。js, camelcase .js,还是别的什么?

我没有找到这个问题的答案在这里

239657 次浏览

没有官方的通用命名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文件名之间的差异(Windows文件名是不区分大小写的,至少在XP中是这样)。

所以,和许多人一样,答案是“视情况而定”或“由你决定”。

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

一种可能的命名约定是使用类似于jQuery使用的命名方案。它并没有被普遍采用,但相当普遍。

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

其中product-name + plugin对也可以表示命名空间模块versionfiletype通常是可选的。

filetype可以是一个相对于文件内容的东西。常见的有:

  • min用于缩小文件
  • custom用于自定义构建或修改文件

例子:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js

我不知道javascript文件有什么特别的约定,因为它们在web上与css文件或html文件或任何其他类型的文件相比并不是唯一的。你可以做一些“安全”的事情来降低你意外遇到跨平台问题的可能性:

  1. 全部使用小写文件名。有一些操作系统对文件名不区分大小写,使用全小写字母可以防止无意中使用两个不同的文件,只是以防在某些操作系统上可能无法工作。
  2. 不要在文件名中使用空格。虽然这在技术上是可以工作的,但有很多原因导致文件名中的空格会导致问题。
  3. 连字符可以作为单词分隔符。如果你想使用某种分隔符来分隔多个单词,而不是像various-scripts.js那样使用空格或骆驼格,那么连字符是一种安全、有用且常用的分隔符。
  4. 考虑在文件名中使用版本号。当你想升级你的脚本,计划浏览器或CDN缓存的影响。使用长期缓存最简单的方法(为了速度和效率),但是当你升级一个JS文件时,立即和安全的升级是在部署的文件名或路径中包含一个版本号(就像jQuery对jQuery -1.6.2. JS所做的那样),然后你在升级/更改文件时碰撞/更改该版本号。这将保证请求新版本的页面不会从缓存中获得旧版本。

我通常更喜欢小写的连字符,但还有一件事没有提到,那就是有时文件名最好与其中包含的单个模块或可实例化函数的名称完全匹配。

例如,我在自己的文件knockoutUtilityModule.js中声明了一个用var knockoutUtilityModule = function() {...}声明的揭示模块,尽管客观地说我更喜欢knockout-utility-module.js。

类似地,由于我使用捆绑机制来组合脚本,我已经开始在各自的文件中定义可实例化的函数(模板化视图模型等),采用c#风格,以提高可维护性。例如,ProductDescriptorViewModel在ProductDescriptorViewModel.js中独立存在(对于可实例化的函数,我使用大写)。