我正在对一年前建立的另一个开发人员的backbone.js应用程序进行一些维护。应用程序从连接和缩小的上下文运行;所以有一个构建过程,但我看不到我识别的Gruntfile或其他构建文件或进程。
此外,应用程序中的所有.js文件都带有看似随机的十六进制数字,后跟这种形式的句点:
7634d305.main.js
880bef54.text.js
1deb5b0d.router.js
..and so on
经过一番挖掘后,我意识到这个开发人员可能一直在使用r.js来构建缩小的部署版本。我无法运行r.js因为整个目录树中的每个依赖项和javascript文件都带有这些奇怪的十六进制字符。
这是一种人们认可的发展模式吗?为什么这些文件的名字是这样的?我可以花一些时间编写一个脚本来删除主要的十六进制字符,但我想确保有一些我不知道的明显工具或步骤。
答案 0 :(得分:2)
这是一种常见的技术,它基本上将文件内容的散列版本添加到文件名中,用于缓存清除;因此,您可以在静态资产上设置较长的到期日期,然后在更新时,重新生成哈希值(因此浏览器会有效地查看新文件并下载更新的文件)。看起来这个被截断为一定长度,但只要散列算法允许(如果你想),它们就可以。(/ p>
在Grunt中,你可以使用grunt-usemin和grunt-rev的组合为自己生成这些,但是有很多工具已经做到这一点,一些流行的PHP框架内置了它,例如Symfony。也许这些是由服务器端框架生成的。
答案 1 :(得分:0)
我不知道他们专门用来生成它的工具,但我猜它可能是文件名和时间散列的结果或类似的文件。
这些文件的命名方式使它们具有唯一性,以便在部署时,浏览器不会使用main.js的缓存版本并破坏应用程序。