【发布时间】:2017-05-04 08:46:21
【问题描述】:
我有以下代码(用 typescript 编写,但可以是任何 JS 变体):
this.http.get('configs/config.json').subscribe(...);
基本上,我是从本地 json 文件加载配置。我想在文件上实现缓存清除。
虽然我可以通过添加哈希后缀来设置我的 webpack 来修改 json 文件,但我还需要修改所有引用这些文件的源文件。 string-replace-loader 可能会完成这项工作,但这样做感觉有点奇怪。
此外,在某些情况下,我无权访问对资源进行 http 调用的代码行(例如加载 i18n/[lang].json 之类的翻译的第三方插件,因此我无法直接修改代码和/或名称(以及内容哈希)仅在运行时已知。
有没有像 webpack 的 URL 重写这样的东西可以解决这个问题?
【问题讨论】:
-
如果你注入一个哈希得到
configs/config.json?<hash goes here>怎么办?如果散列发生变化,那么它将使查询无效。您可以使用DefinePlugin等轻松注入。 -
我会将这个哈希注入到哪里?加载它的 ts 文件(问题在第三段中描述)还是通过在 webpack 中重命名文件来完成(windows 服务器不允许这种命名)?
-
DefinePlugin可以这样做,如果你有类似hash = HASH;并替换HASH.. 然后你可以像往常一样做'configs/config.json' + hash。 -
成功了,谢谢。我只需要根据实际文件内容找到一种方法来制作这个 HASH。
-
这是一个更难的问题。如果它只是一个文件,那么您可以使用 Node.js 在文件内容上计算 md5 并将其注入。处理多个将更加棘手。我没有足够的信息来给出确切的解决方案。