javascript文件名命名约定是什么?[关闭]


283

文件应命名为-hyphens.js,camelCased.js还是其他名称?

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


2
好的命名约定是命名文件名,因为您会在代码中看到该实体。该MyPlugin班会去MyPlugin.js。该MenuItem阵营组件将进去MenuItem.js。其他开发人员将需要/导入“您的酷模块”并使用其中的多个符号,因此命名为cool-module.js。–
Dan Dascalescu

1
这篇文章不是基于选项的。实际上,这很重要。在这里,您有Google制作的指南-google.github.io/styleguide/jsguide.html#file-name。(Google JavaScript样式指南)
zwitterion

Answers:


184

一种可能的命名约定是使用类似于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

31
我同意你所说的。但是我目前正在努力解决的一件事:如果“插件”包含两个单词怎么办?用圆点隔开吗?jquery.myPlugin-1.0.0.js或jquery.my.plugin-1.0.0.js或jquery.my_plugin-1.0.0.js或jquery.myplugin-1.0.0.js甚至jquery.my-plugin- 1.0.0.js?也许您可以用它来完成示例,谢谢!
Mayrs,2012年

4
AMD模块呢?如果在文件名中使用版本,则在版本号更改时必须更改很多文件。
knut

3
@junior,这是一篇旧文章,但是快速的Bower搜索显示jquery插件没有遵循任何特定约定。似乎(1)将单词推在一起,(2)使用脊柱式大小写和(3)使用camelCase都以大致相等的频率使用。
bholben 2014年

不要忘记,某些版本控制和文件系统在识别小写单词与相同单词在大写或驼峰式情况下存在区别时会遇到问题(例如:“ ThisWord”在某些环境下与“ thisword”相同)。使用camelCase约定时要记住的一点。
amypellegrini 2015年

@knut您不应通过版本名称进行加载,而应将模块名称映射到特定的版本文件。
达洛尔

132

我不知道javascript文件的任何特殊约定,因为它们在Web上与CSS文件或html文件或诸如此类的其他任何类型的文件上并不是唯一的。您可以执行一些“安全”的操作,以减少意外碰到跨平台问题的可能性:

  1. 使用所有小写的文件名。 有些操作系统对文件名不区分大小写,并且使用所有小写字母可以防止无意间使用两个仅在某些操作系统上可能不起作用的情况下才不同的文件。
  2. 不要在文件名中使用空格。 尽管从技术上讲这可以使之起作用,但文件名中的空格可能导致问题的原因有很多。
  3. 连字符适合单词分隔符。 如果要对多个单词使用某种分隔符,而不是如中的空格或驼峰字母various-scripts.js,则连字符是一种安全,有用且常用的分隔符。
  4. 考虑在文件名中使用版本号。 当您要升级脚本时,请规划浏览器或CDN缓存的效果。使用长期缓存(为了提高速度和效率)最简单的方法是,但是在升级JS文件时立即安全地进行升级,是在已部署的文件名或路径中包括版本号(就像jQuery的jquery-1.6.2.js一样)。 ),然后在每次升级/更改文件时更改/更改该版本号。这将确保从缓存中不会向请求较新版本的页面提供较旧版本。

56

没有正式的,通用的约定来命名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

10
为+1 The beauty to this naming convention is that it explicitly describes the global namespace pollution being added.,但从未注意到
Adrien Be

2
我唯一的问题是,如果您有一个创建Foo或的文件,该myFoo如何简单地分别命名该文件Foo.jsmyFoo.js
分号

13

您所提供的链接中的问题是关于JavaScript变量的命名,而不是文件命名,因此请在提出问题的上下文中忽略该问题。

至于文件命名,这纯粹是偏好和品味的问题。我更喜欢用连字符命名文件,因为那样我就不必像使用camelCase文件名时那样使用Shift键了。并且因为我不必担心Windows和Linux文件名之间的差异(Windows文件名不区分大小写,至少在XP中是如此)。

因此,答案与许多答案一样,是“取决于”或“取决于您”。

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


6
连字符与驼峰案例推理的+1。
cellepo 2014年

6

我通常喜欢使用小写的连字符,但尚未提及的一件事是,有时使文件名与包含在其中的单个模块或可实例化函数的名称完全匹配非常好。

例如,我有一个显示模块,var knockoutUtilityModule = function() {...}在其自己的名为kickoutUtilityModule.js的文件中声明了该模块,尽管从客观上讲,我更喜欢剔除实用程序module.js。

类似地,由于我使用捆绑机制来组合脚本,因此我采取了在各自的C#样式文件中定义可实例化函数(模板视图模型等)的方法,以实现可维护性。例如,ProductDescriptorViewModel单独存在于ProductDescriptorViewModel.js内部(我对可实例化函数使用大写字母)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.