在vue-cli中構建的項目是可以使用less的,但是查看package.json可以發現,并沒有less相關的插件,所以我們需要自行安裝。
第一步:安裝
npm install less less-loader --save-dev
即通過npm安裝less和less-loader,并記錄到devDependencies中,因為這是我們在開發中使用的而非在生產中使用,所以就不將之記錄在 dependencies 中。
第二步:在配置文件中配置
實際上如果我們通過vue-cli來構建項目,這一步是可以省略的。
在webpack.dev.conf.js中,我們可以看到下面的代碼:
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
},
即webpack.dev.conf.js在合并了webpack.base.conf.js的基礎上又添加了dev環境下的module。
注意:在上面的代碼中,我們還可以使用loaders來代替rules, 他們的含義是一樣的。
在build文件夾下有一個utils.js文件,這個文件提供了一些通用的方法,供webpack.dev.conf.js和webpack.prod.conf.js使用。 其中styleLoaders方法如下:
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
通過這個方法可以對大多數css預處理進行了配置,具體配置在cssLoaders方法中。
第三步:在單組件.vue中使用
如下所示:
<template>
<div class="hello">
<h3>{{msg}}</h3>
<h3>Essential Links</h3>
<ul>
<li>Core Docs</li>
</ul>
<h3>Ecosystem</h3>
</div>
</template>
<script>
export default {
name: 'hello',
data: function () {
return {
msg: "Welcome to your vue.js app"
}
}
}
</script>
<style scoped lang="less">
.hello {
color: red;
font-size: 0.45rem;
h3 {
color: blue;
}
}
</style>
需要注意一下幾點:
1.已經在webpack中配置了,所以這里不需要引入任何less文件。
2.在style中聲明lang="less"。 注意: scoped的作用僅僅是限定css的作用域,防止變量污染。
3.這樣就可以根據less的語法使用了。
補充:通過下面的代碼就不難理解問什么scoped可以隔離作用域了。 即給不同組件的所有html添加一個屬性,然后在css中使用屬性選擇器來防止作用域的污染,實在聰明?。?!

把scoped去掉之后,我們就可以發現已經沒有額外的屬性了:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。