目录

一、功能场景

 二、原因

三、 解决

四、总结

webpack打包public里面的文件(pdf、exel、word、favicon.png、html、txt等)和assets里面的文件(被web页面引用的图片、音频、css文件等)的不同


一、功能场景

【1】需求是做一个下载Exel模板的共能:

         原先我是把Exel模板放在src下专门放静态资源(图片、css文件、json文件、xml文件)的assets文件夹里面,在利用a标签写入文件的相对路以达到点击标签下载Exel模板的目的。

【2】结果

         下载文件的时候,拼接出来的路径找不到对应的文件:

 二、原因

webpack在对assets文件进行打包的时候就会把该文件作为一个模块打包到一个js文件夹里面,通俗的讲:就是文件格式发生了改变。所以我觉得它可能就是专门放用来展示在页面的静态资源,而下载下来的文件是来使用的资源。

webpack打包assets文件具体可参考:

webpack4.0各个击破—— Assets - 知乎

三、 解决

【1】方法:

        把Exel模板放到public文件夹中,再用a标签链接到public所在的相对路径:如 href=“./XXXXX.xlsx”。

【2】原理:

       public文件夹和assets文件夹一样都是放静态文件的。而不同的是,在webpack打包项目的时候,会原封不动地对public进行打包:而assets文件夹经过webpack打包之后,会变成base64或者fallback格式但是可以被浏览器解析展示在web页面上的东西。

四、总结

webpack打包public里面的文件(pdf、exel、word、favicon.png、html、txt等)和assets里面的文件(被web页面引用的图片、音频、css文件、json、xml文件等)的不同

【1】public被webpack打包,不变,一开始是什么样子,组后还是什么样子

【2】assets被webpack打包,会变成base64或者fallbac格式的文件

GitHub 加速计划 / vu / vue
109
18
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079 [skip ci] 1 年前
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐