Sass 的 JavaScriptAPI
1. 简介
前面我们讲解的所有内容,基本都是在使用 Sass 为我们提供的扩展功能,在使用 Sass 的语法,一般来说这些代码都是写在 .scss 为后缀的文件中的。而 Sass 还提供了一些 API 接口使得我们在 JS 中可以调用,也就是在 .js 为后缀的文件中去调用这些 API 。
2. 什么是 Sass 的 JavaScriptAPI
API 指的是应用程序接口,Sass 中提供了一系列供 javascript 调用的应用程序接口。
3. 如何使用
在两个主要的 Sass 库 node-sass 和 dart-sass 中都支持 JavaScriptAPI ,并且它们的 API 语法都是相同的,本节内容我们使用的是 node-sass 。使用的时候需要加载 Sass 并赋给一个变量,然后就可以调用 API 了,我们举例看下:
var sass = require("node-sass");
sass.render({
file: "style.scss"
}, function(err, result) {
// ...
});
上面的代码就是使用的方式,其实就是普通的 Javascript 语法,下面我们看下 Sass 都为我们提供了什么 API 。
4. 常用 API 举例
4.1 render() 和 renderSync()
render() 函数是将 Sass 文件异步编译为 CSS ,并在渲染完成时调用传入的回调函数,它接收一个 options 参数和一个回调函数,options 参数是一个 Object 类型,它必须有 file 或 data 选项。我们举例来看下:
var sass = require('node-sass');
sass.render({
file: "style.scss"
}, function(err, result) {
// 回调函数,在渲染完调用此函数
});
renderSync() 函数的作用与 render() 函数是相同的,唯一不同的是 renderSync() 函数是同步的,这需要你对 javascript 中的同步异步有深入的了解,所以对于同步函数,如果执行失败我们需要捕获错误并抛出,我们举例看下:
var sass = require('node-sass');
try {
var result = sass.renderSync({file: "style.scss"});
} catch(e) {
throw new Error(e.message)
}
4.1.1 result.css
var sass = require('node-sass');
try {
var result = sass.renderSync({file: "style.scss"});
// 编译的 CSS
console.log(result.css.toString())
} catch(e) {
throw new Error(e.message)
}
4.1.2 result.map
4.1.3 result 中其他的属性值
4.1.4 error
4.2 info
var sass = require('node-sass');
console.log(sass.info);
这个 API 很简单,就是获取到一些版本和当前使用的 Sass 的信息,来供你处理或者做一些判断逻辑。