在 Web 应用开发中,CSS 代码的编写是重要的一部分。CSS 规范从最初的 CSS1 到现在的 CSS3,再到 CSS 规范的下一步版本,规范本身一直在不断的发展演化之中。这给开发人员带来了效率上的提高。不过与其他 Web 领域的规范相似的处境是,CSS 规范在浏览器兼容性方面一直存在各种各样的问题。不同浏览器在 CSS 规范的实现方面的进度也存在很大差异。

另外,CSS 规范本身的发展速度与社区的期待还有一定的差距。这也是为什么 Sass 和 Less 等 CSS 预处理语言可以流行的重要原因。Sass 和 Less 等提供了很多更实用的功能,也体现了开发人员对 CSS 语言的需求。还有目前流行的对 CSS 进行处理的工具 PostCSS,依托其强大的插件体系为 CSS 处理增加了无穷的可能性。本文将介绍 Less 在 Vue 中的使用。

Less 是什么

Less 是 CSS 语言的向后兼容扩展。也就是说,Less 是 CSS 的超集,兼容现有 CSS 语法,并提供一些便利的额外功能。

用 Less 来编写 CSS 可以使代码更加简洁优雅,便于扩展和维护。这篇博文将讨论如何在 Vue 中引入 Less。

Less is CSS, with just a little more.

如何引入 Less

本文基于 Vue CLI 构建的项目,介绍如何引入 Less。步骤如下。

1、安装 Less

在代码根目录执行命令安装 Less

npm --save-dev install less less-loader

2、配置路径别名

webpack.base.conf.js 中的 resolve 域里增加 less 别名,以后在引入 Less 文件时,可以使用别名 ~less 代替 src/style/less,如:@import '~less/browser-reset.less'。这样做不仅编码方便,也可以防止写错路径。

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'less':resolve('src/style/less'),
    }
  }

3、完成

在 Vue-CLI 构建的项目中,Vue-CLI 会自动帮我们在 utils.js 中引入多种 CSS 加载器,我们无需做任何其他配置,即可使用 Less 编写样式或者 import Less 样式文件到 Vue 中。

// https://vue-loader.vuejs.org/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

如何使用 Less

使用 Less,可以用以下两种方式

1、通过 import 直接引入

// main.js
import '~less/el-reset'

上述代码在 main.js 中引入 Less 样式文件,这里引入的样式将作用于全局。一般我们在 main.js 中引入重置页面的或其他需要全局生效的样式文件。

2、通过 style 引入

在单文件 Vue 组件里,可以通过 style 标签引入 Less 样式文件

<!-- Add "scoped" attribute 
to limit CSS to this component only -->
<style lang="less" scoped>
    .namespace {

    }

    .class-name {
        .nest-class-name {
            .namespace()
        }
    }
</style>

上述代码在 style 标签中引入 Less。其中 lang="less" 告诉编译器,样式用 Less 编写,需要预解析成普通 CSS;scoped 表示样式只在当前组件中生效,不加 scope 样式将作用于全局。

总结

Vue 官方提供的 Vue-CLI 脚手架工具帮我们做了很多事情,我们无需太多的配置,就可以引入很多东西。它甚至已经帮我们自动引入了 PostCSS。同时,Vue-CLI 也隐藏了很多细节,如果对 npmwebpack 等工具不了解的话,可能无法理解这些是如何实现的。

(done)

参考文档

[1] Less

[2] Vue CLI

[3] vuejs-templates

[4] 基于vue-cli快速构建

[5] 使用 PostCSS 进行 CSS 处理

Categories:

Updated:

Back to Top ↑