+ [二、写在 vue 中的 less](#_vue__less_29)
+ [三、对于外部 less 文件](#_less__49)
+ [四、补充说明](#_96)
+ [五、拓展阅读](#_111)
一、前言
Vue
项目中应用预处理器,可以有效减少css
代码量, 推荐使用Sass
、Scss
、Less
预处理器。在创建项目的时候可以选择预处理器 (Sass/Less/Stylus
)。
如果当时没有选择,内置的 webpack
仍然会被预配置为可以完成所有的处理,也可以手动安装相应的 webpack loader
:
# Sass
npm install -D sass-loader node-sass
# Less
npm install -D less-loader less
# Stylus
npm install -D stylus-loader stylus
然后,就可以导入相应的文件类型,或在 .vue
文件中这样来使用:
<style lang="scss">
$color: red;
</style>
下面主要讲解一下vue
中应用less
或者sass
的方法,以less
为例(style.less
)。
二、写在 vue 中的 less
所有vue
文件的<style lang="less"></style>
,会被vue-loader
处理编译到一个css
文件中,最终自动通过link
标签写入index.html
(在vue-loader.conf.js
中配置)
<style scoped lang="less">
.notFoundPage {
background-color: #0a8acd;
color: #fff;
position: relative;
h1 {
font-weight: 500;
}
}
</style>
<link href="/static/css/app.21d3ff57a1596ef90908ba816fbb9496.css" rel="stylesheet">
三、对于外部 less 文件
- 在
main.js
中import style.less
。
此时webpack
会把style.less
和各个vue
文件的less
部分一起编译到同一个css
文件,并在index.html
的link
中自动引入。
2. 在webpack
的入口文件entry
中加上style.less
,编译完的出口文件会被自动注入到index.html
文件中。
entry: {
app: './src/main.js',
style: './src/style/style.less'
},
<script type="text/javascript" src="/static/js/style.c67fefaf3f60c5ca074a.js"></script>
注:在vue2.x
的webpack.base.conf.js
:
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
以上是针对.vue
文件的处理规则,其中vueLoaderConfig
是vue-cli
自己定义的加载器,专门处理css
样式。
vueLoaderConfig 引用的utils.js
:
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
读者福利
========
由于篇幅过长,就不展示所有面试题了,想要完整面试题目的朋友(另有小编自己整理的2024大厂高频面试题及答案附赠)