【发布时间】:2019-12-02 12:40:27
【问题描述】:
问题有这个前提,可能我错了:
- 运行构建脚本 Webpack 会创建一个新的 dist 文件夹,其中包含 dist 文件
- 它创建一个资产目录
- 它用图像填充资产目录 使用像 123af34119.png 这样的新名称,以便它们具有不同的名称 并且可以缓存
- 它根据 必填页面
当用户替换或插入新上传的图像时,图像不会上传到 dist 文件夹中,所以在我再次构建之前,图像不会更新或显示。
- 我应该将上传的图片复制到 dist 文件夹中吗?
- 用哪个名字?
- 我应该像热重载一样使用“watch”属性吗?
- 我应该使用任何特定的上传器吗?
我用谷歌搜索了很多,但没有找到太多。
【问题讨论】:
-
您是否有理由要将图像构建到源代码中?用户输入可能不应该成为网站本身的一部分。相反,您应该将图像上传到您的服务器,并在请求时从那里提供它。想象一下,如果您允许用户更改页面上的某些文本。与重写 html 相比,创建一个从某个数据库或存储中提取的动态字段不是更有意义吗?
-
html总是一样的,没有重写。它加载的图像恰好是一个独特的图像,比如说 user101.jpg。当用户上传一个新的时,它会替换服务器资产目录中的 user101.jpg,而不是 webpack dist 目录中的。如果我再次构建 webpack,我会看到用户上传的图像已更新。在开发模式下,它会立即更新,没有问题。
-
我从改变角度看到的唯一解决方案是使用“静态”公用文件夹,但它不会进入 webpack。所以问题是:静态文件夹是唯一的解决方案吗?
-
您实际上是在尝试重写 html,因为图像 src 正在从一个构建更改为下一个构建。您还需要将新文件内置到 dist 中。它很可能在开发中为您工作,因为您正在进行某种热门的构建。但是,在 prod 中,src 需要更改为新的图像哈希,并且文件需要被哈希并内置到 dist 中。 Webpack 不会动态地这样做;这是一个一次性的构建过程,您应该运行一次,生成您需要的文件,然后进行部署。这就是为什么我建议使字段动态并拉入文件的原因。