一切福田,不離方寸,從心而覓,感無不通。

Vue项目静态文件之图片的引用

一、前提

工程文件目录

|- mock
|- node_modules
|- public
|- src
|-- api
|-- assets
|-- components
|-- router
|-- store
|-- style
|-- test1.scss
|-- test1_main.scss
|-- utils
|-- views
|-- static_test
|-- test1.scss
|-- App.vue
|-- main.js

二、背景图的引用

背景图样式直接写在element的style属性里

直接在html模板里,在dom对象的style里加背景图,不起效果,代码如下:


 

背景样式class写在vue文件的style标签里

写法:
background: url('图片相对当前的路径') center top no-repeat


 


 

编译后的css:


 

背景样式class写在样式文件里,在vue文件里引入样式文件

样式写法:


 

这个图片路径很重要,url是图片相对于当前vue文件的路径,而不是图片相对于样式文件的路径。

html写法, /views/static_test/test1.vue:


 

样式写法, /style/test1.scss:


 

/views/static_test/test1.vue,引入样式文件写法:


 

编译后:


 

背景样式class写在样式文件里,在main.js里引入样式文件

html写法, /views/static_test/test1.vue:


 

样式写法, /style/test1_main.scss:


 

请注意,url是main.js相对于图片文件的路径。

引入样式文件方法,main.js:


 

引进来的样式做为系统公共样式。

编译后:


 

三、图片的显示

图片引入直接写在html里

html写法:


 

编译后:


 

图片url在js的data里定义

html写法:


 

js写法:


 

直接定义路径链接是不起效果的,需要在链接外面加上require。

编译后:


 

图片url由js动态设置

html写法:


 

js写法:


 

在js定义的路径都需要加上require。

编译后:

四、打包后生成的图片路径分析

打包后生成的文件目录

不管发布到根目录,还是发布到子目录,打包后生成的文件层次结构是一样的,如下:

|- dist
|-- css
|-- fonts
|-- img
|-- js
|-- favicon.ico
|-- index.html

打包后引用图片的路径

编译后所有非require引入的图片都被编译到/dist/img/目录下面,并且重命名,引用路径亦已改变,路径随图片文件位置和引用图片的文件的位置而调整了。
而require引入的图片则生成了图片base64编码,图片路径就是图片base64编码。

1、背景图路径
编译打包后生成的背景图路径格式为: ../img/##.png,
编译打包后所有的样式代码在css目录的文件中,引用图片的文件是样式文件,引用图片的路径是样式文件相对于图片位置的路径,所以由'../img’开头。

2、图片路径
编译后的<img>引用路径格式是: /img/##.png,和背景图的引用路径不一样。
引用图片的文件是html,html文件在根目录,所以引用路径由’/img’开头。

3、图片base64编码
使用require引入的图片,经编译后直接生成了图片base64编码。

打包后生成的index.html文件

发布到根目录的情况

.env.production,环境变量配置


 

vue.config.js配置


 

生成的index.html


 

发布到子目录的情况

.env.production,环境变量配置


 

vue.config.js配置


 

生成的index.html


 

作者:Anqi2018
链接:https://www.jianshu.com/p/95cf12319fd6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。