了解无关的文件扩展名

Understanding Extraneous File Extensions

我经常看到 JavaScript 文件带有额外的文件扩展名(我 认为 "extension" 是正确的术语;如果不正确,有人纠正我因为我找不到标记它们的资源)例如:

someFile.bundle.js
         ^^^^^^

我记得读过,添加这样的文件扩展名可以使用命名约定(.bundle 指的是 捆绑 其他文件集合的文件)。

我最近看到了更多文件扩展名,例如:

someFile.spec.js
         ^^^^

现在我质疑这些扩展背后的行为;它们只是用于约定吗?这些类型的扩展的名称是任意的(因为有人可以在那里放置任何旧的扩展并且它不会影响任何东西)?什么时候应该使用这些?是否有某些您应该使用的扩展程序(也许有些您不应该使用)?

它们不是扩展,真的。文件扩展名(至少通常)是文件名末尾的 last .。这些只是 .js 个文件。剩下的就是纯粹的名字了。

人们这样做是为了对事物进行分类。例如,在您的示例中,我怀疑第一个文件是根据多个输入文件自动生成的;例如,它是一个 捆绑包 。第二个可能包含测试代码,以确保某些外部 API 正常工作。在这两种情况下,我都是在推测,但关键是它只是一种命名约定。它可以是 someFile-bundle.jssomeFile-spec.js 一样容易。

有一段时间我使用约定 somefile.es6.js 来表示文件包含 ES2015 (ES6) 语法并且在网络上使用之前需要转换,但我的一个客户使用 somefile-es6.js(我认为这比我的更常见)。这使得在构建脚本等中很容易挑选出它们(.es6.js-es6.js)。

除了 javascript 文件之外,文件扩展名可用于各种处理指令。例如,我已经开始命名我的许多 php 文件,例如 file.ajax.phpfile.process.php,这些文件包含通用头文件,这些文件包含检查文件扩展名以确定是否提供服务的逻辑html,比如常见的导航

我还想起了使用 .blade.php "file extension" 的 Laravel's blade templating engine,因为它的语法包含超出正常 php.

的操作