前言
本教程适用于 Vue-Cli v3 v4
网上教程零零散散,所以这里我作一下总结,可能与您的代码有所偏差,希望指出,但是勿喷.谢谢!
准备
由于安的包比较多,所以,在我印象中这个教程安装这两个就行了
经过测试,这两个包可以不用安装
cnpm i node-sass
cnpm i sass-loader
干正事
-
首先找到我们根目录[node_modules 同级]下的vue.config.js(没有的话自己创建)
// vue.config.js
const path = require('path');
function resolve(dir) {
//__dirname为项目根目录,node的express方法中也有使用,join为javascript连接符
return path.join(__dirname, dir)
}
module.exports = {
// publicPath: process.env.NODE_ENV === 'production' ? '/public/' : '/',
// assetsDir: "assets",
// 上面两行千万别设置,不然使用nginx部署的时候,会报错!!!!!!!!!!!!
// chainWebpack这里是比较重要的
chainWebpack: (config) => {
config.resolve.alias
.set('@', resolve('src'))
.set('assets', resolve('src/assets'))
},
pluginOptions: {
// 假设报 style-resources-loader错误,请安装style-resources-loader;
'style-resources-loader': {
preProcessor: 'sass',
patterns: []
}
}
}
这里说明一下chainWebpack:
图片一般保存在public或src/assets文件夹里面,这里set('@', resolve('src')) 做的事情就是将 @/assets 变成成src/assets .
-
来到我们的Style标签下面
<style scoped lang='scss'>
/* 在标签中设置 lang='sass' */
.demo {
background: url("~assets/img/BgImg.png") no-repeat;
}
</style>
"~assets/img/BgImg.png" url前面必须带有一个~ ,否则无法访问到我存放在assets里面的资源,
后面的assets 根据我们在 vue.config.js 中的 chainWebpack set('assets', resolve('src/assets')) 解析到了src/assets 目录,故访问到了我存在assets/img/BgImg.png中的资源图片.
后记
这篇教程可能有很多不怎么专业的用词,请看到的大佬帮忙指出.谢谢!
|