比如
我的项目结构
├── build
...
├── src
│ ├── style
│ │ ├── scss
│ │ │ └── index.scss
│ │ └── style.scss
...
│ ├── page
│ │ └── index.vue
...
├── static
│ ├── css
│ ├── font
│ ├── image
│ └── js
在index.scss中引用路径时用的相对路径
../../../static/image/img.png
在index.vue中
<img src="../../static/image/img.png"/>
很容易出错...
能定义一个变量比如 imagePath 来指代路径吗?
样式表中也能解析
注意,是开发环境,不是生产环境的路径问题
谢谢
首先
你不应该用相对路径去引用
static
目录下的资源可以看出你这个项目是
Vue CLI 2.x
脚手架创建出来的项目。这个项目下的static
目录意图是用于存放某些静态资源,这些资源是不会被webpack
打包处理的,只是会被单纯的拷贝。但是如果你使用相对路径去引用这些资源,它们就会被webpack
处理了(minify、uglify、转base64等),这便与原始的目的违背了。webpack
处理,那么你应该将static
目录下的资源放到src/assets
目录下,再通过相对路径引用这些资源。webpack
处理,那么你可以保持现在的目录,不过引用这些资源的时候请用绝对路径,就问题中的例子来说就是/static/image/img.png
(注意要以/
开头)回到问题上
可以通过设置
alias
来方便相对路径的引用然后在 <template> 中使用
在
scss
文件中使用要注意的是,使用
alias
的路径会被webpack
处理,这就是为什么我把路径改成src/assets
了;至于为什么用
~@
以及其他相关内容可以参考:Vue CLI webpack 模板关于静态资源的描述 和一篇针对 Vue CLI 搭建项目路径相关问题的描述