文件应该命名为something-with-hyphens.js、camelcased.js还是其他名称?
我在这里找不到这个问题的答案。
- 一个好的命名约定是命名文件名,就像在代码中看到的那样。MyPlugin类将进入MyPlugin.js类。MenuItem反应组分进入MenuItem.js中。其他开发人员将需要/导入"您的酷模块",并使用其中的多个符号,因此将其命名为cool-module.js。-
一种可能的命名约定是使用类似于jquery使用的命名方案的东西。它并不是被普遍采用的,但很普遍。
1
| product-name.plugin-ver.sion.filetype.js |
其中,product-name和plugin对还可以表示名称空间和模块。version和filetype通常是可选的。
filetype可以是与文件内容相关的内容。经常看到的是:
- min用于小型文件
- 用于自定义生成或修改文件的custom
实例:
- jquery-1.4.2.min.js
- jquery.plugin-0.1.js
- 20
- 我同意你说的话。但有一件事我目前正在努力:如果"插件"包含两个单词怎么办?用点把它们分开?jquery.my plugin-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?也许你可以用它来完成你的例子,谢谢!
- AMD模块呢?如果在文件名中使用版本,则如果版本号发生更改,则必须更改很多文件。
- @Junior,这是一篇老文章,但是Bower的快速搜索显示jquery插件不遵循任何特定的约定。似乎(1)将单词推到一起,(2)使用脊椎大小写,和(3)使用camelcase都以大致相等的频率使用。
- 不要忘记,有些版本控制和文件系统在识别小写单词和un upper或camelcase(例如:"thisword"在某些环境中与"thisword"相同)相同单词之间的区别时存在问题。在使用camelcase约定时要记住的东西。
- @knut不应该通过版本名加载,而是将模块名映射到特定的版本文件。
我不知道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)
这个命名约定的好处在于它明确地描述了正在添加的全球名称空间污染。
- 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
- +1对于The beauty to this naming convention is that it explicitly describes the global namespace pollution being added.,从未注意到
- 我唯一的问题是,如果您有一个创建Foo或myFoo的文件,您会简单地分别命名该文件Foo.js或myFoo.js吗?
您给出的链接中的问题讨论的是JavaScript变量的命名,而不是文件命名,因此对于您提出问题的上下文,请忽略这一点。
至于文件命名,这纯粹是一个偏好和品味的问题。我喜欢用连字符命名文件,因为这样我就不必像处理camelcase文件名那样使用shift键;也不必担心Windows和Linux文件名之间的差异(至少通过xp,Windows文件名不区分大小写)。
所以,像很多人一样,答案是"视情况而定"或"由你决定"。
您应该遵循的一条规则是在您选择的约定中保持一致。
我通常喜欢使用小写的连字符,但有一点还没有提到,有时候让文件名与包含在其中的单个模块或可实例化函数的名称完全匹配是很好的。
例如,我在自己的名为knockoutilitymodule.js的文件中使用var knockoutUtilityModule = function() {...}声明了一个暴露模块,尽管客观上我更喜欢knockout-utility-module.js。
同样,由于我使用绑定机制来组合脚本,我已经开始在各自的文件中定义可实例化的函数(模板化视图模型等),以实现可维护性。例如,productDescriptorViewModel独立于productDescriptorViewModel.js内部(我对可实例化函数使用大写)。