vue - 图片存放路径`public目录、src/assets目录下)的区别、访问方式
public目录下项目需要使用的静态资源,有更新动态显示的需求。src/assets目录下适合存放项目中所必须的图标,属于代码的一部图片存放在这两个位置时的访问方法:public目录下:使用 / 开头的绝对路径访问若:/public/images/a.jpg访问: <img src="/images/a.jpg">若:/public/images/a/b/c/d.jpg访问: <
public
目录下项目需要使用的静态资源,有更新动态显示的需求。
src/assets
目录下适合存放项目中所必须的图标,属于代码的一部
图片存放在这两个位置时的访问方法:
-
public
目录下:使用 / 开头的绝对路径访问若:/public/images/a.jpg
访问: <img src="/images/a.jpg">
若:/public/images/a/b/c/d.jpg
访问: <img src="/images/a/b/c/d.jpg">
-
src/assets
目录下:使用相对路径访问若: /src/assets/a.jpg
访问:<img src="../assets/a.jpg">
<img src="@/assets/a.jpg"> @代表src目录
检查元素发现,asset下的图片访问路径被篡改成了: /img/001.923456aefr4trwt44.png
原因是,webpack
在编译打包过程中,将会把src
下的所有引用的资源当做模块进行处理。图片也不例外。脚手架默认会将图片直接打包到输出项目目录下的/img
文件夹中,为了防止命名冲突,还为每张图片重命名。最后将源代码中的src
路径进行了篡改。使得页面可以正常显示该图片。
再次webpack
打包时会对这些占用空间足够小的小图标进行优化。将会把一些小图标直接转成base64
图片编码,为img
的src
直接赋值。降低浏览器访问小图片的频率。优化网页访问性能。
assets
下的动态路径的设置方式:
<img :src="`../assets/a.jpg`">
一旦img
的src
是动态属性,那么webpack
将不会对该路径进行篡改,会原封不动的编译该标签。这样,浏览器在加载图片时,就会去找assets
,将会找不到该图片。
应该如下设置assets
下的动态路径:
<img :src="require('../assets/a.jpg')">
将该路径经过require
处理后,会把图片当做模块重命名后放到项目的/img/
文件夹下,并且将src
修改为可以访问到的/img/xxx.xx.jpg
文件路径。正常显示该图片。
更多推荐
所有评论(0)