0

我正在对大约一年前另一个开发人员构建的主干.js 应用程序进行一些维护。应用程序从连接和缩小的上下文中运行;所以有一个构建过程,但我看不到 Gruntfile 或我认识的其他构建文件或过程。

此外,应用程序中的所有 .js 文件都以看似随机的 HEX 数字开头,后跟以下形式的句点:

7634d305.main.js
880bef54.text.js
1deb5b0d.router.js
..and so on

经过一番挖掘,我意识到这个开发人员可能一直在使用 r.js 来构建缩小的部署版本。我无法让 r.js 运行,因为整个目录树中的每个依赖项和 javascript 文件都带有这些奇怪的十六进制字符。

这是任何人都认可的发展模式吗?为什么这些文件是这样命名的?我可以花一些时间编写一个脚本来删除前导十六进制字符,但我想确保我缺少一些明显的工具或步骤。

4

2 回答 2

2

这是一种常用技术,它基本上将文件内容的散列版本添加到文件名中,用于缓存清除;因此您可以在静态资产上设置较长的到期日期,然后在更新它时重新生成哈希(因此浏览器有效地看到一个新文件并下载更新的文件)。看起来这个被截断为一定长度,但只要散列算法允许(如果你愿意),它们可以是长的。

在 Grunt 中,您可以使用grunt-usemingrunt-rev的组合来为自己生成这些,但是已经有很多工具可以做到这一点,一些流行的 PHP 框架已经内置了它,例如 Symfony。也许这些是由服务器端框架生成的。

于 2013-10-22T21:12:57.013 回答
0

我不知道他们专门使用什么工具来生成它,但我猜这可能是文件名和文件部署时间或类似内容的哈希结果。

这些文件以这样的方式命名以使它们独一无二,以便在部署它们时浏览器不会使用缓存版本的 main.js 并破坏应用程序。

于 2013-10-22T21:08:57.307 回答