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

应该用hyphens.js,camelCased.js还是别的什么来命名文件?

这里我没有find这个问题的答案。

一个可能的命名约定是使用类似于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文件约定,因为它们不是真正独特的networking与CSS文件或HTML文件或任何其他types的文件。 有一些“安全”的事情可以使你不太可能偶然遇到跨平台的问题:

  1. 使用全部小写的文件名。 有些操作系统对文件名不区分大小写,并且全部使用小写字母可防止无意中使用仅在某些操作系统上可能无法使用的情况下才会有所不同的两个文件。
  2. 不要在文件名中使用空格。 虽然这在技术上可以起作用,但为什么文件名空间会导致问题呢?
  3. 短划线是可以的字隔离器。 如果你想使用多种单词的分隔符而不是像various-scripts.js中的空格或camelcase,那么短划线就是一个安全有用的常用分隔符。
  4. 考虑在文件名中使用版本号。 如果要升级脚本,请计划浏览器或CDNcaching的效果。 使用长期caching(速度和效率)最简单的方法,但升级JS文件时立即和安全的升级是在部署的文件名或path中包含一个版本号(就像jQuery与jquery-1.6.2.js一样),然后在升级/更改文件时碰撞/更改该版本号。 这将保证没有任何请求更新版本的页面从高速caching服务于旧版本。

命名JavaScript文件没有官方的, 通用的惯例。

有一些select:

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

都是有效的命名约定,但是更喜欢jQuery提出的命名约定(对于jQuery插件,尽pipe它适用于任何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

您提供的链接中的问题是关于JavaScriptvariables命名的问题,而不是文件命名问题,所以请不要忘记提问问题的上下文。

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

所以答案就像这么多,是“取决于”还是“取决于你”。

您应遵循的一条规则是在您select的会议中保持一致。

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

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

同样,因为我使用绑定机制来组合脚本,所以我已经开始定义可自定义的实例化函数(模板化视图模型等),每个函数都以自己的文件C#风格进行维护。 例如,ProductDescriptorViewModel存在于ProductDescriptorViewModel.js中(我使用大写字母来实例化函数)。