您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Sass 的 JavaScriptAPI

前面我们讲解的所有,基本都是在使用 Sass 为我们提供的扩展,在使用 Sass 的语法,一般来说这些都是写在 .scss 为后缀的中的。而 Sass 还提供了一些 API 接口使得我们在 JS 中可以,也就是在 .js 为后缀的中去这些 API 。

这种方式在写样式中很不常用,但我们还是单独拿出章节来讲解它,以便你对 Sass 有更全面的认识。另外

API 指的是应用程序接口,Sass 中提供了一系列供 javascript 的应用程序接口。

在两个主要的 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 。

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)
}

上面我们可以看到 renderSync() 或者 render() 都会返回 result ,返回的 result 是 Object,它都包含什么呢?我们下面讲解下。

编译为 css 后的,是一段 Buffer ,我们可以通过 JS 的 toString() 来解析它,如下所示:

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)
}

这个返回的是编译后的 CSS 到源的映射,它是 Buffer,你可以理解为这就是 SourceMap

result 中还存了很多很多的和值,为了你能更好的了解,我下面直接列出表格来展示这些:

renderSync() 或者 render() 也就返回 error ,这个 error 也是 Object ,同样下边我以表格的形式将 error 中的值列出来:

这个 API 通过字面意思我们就知道,可以用它来 Sass 的相关信息,使用的 Sass 的版本等等,我们举例看下:

var sass = require('node-sass'); 
console.log(sass.info);

这个 API 很简单,就是到一些版本和当前使用的 Sass 的信息,来供你处理或者做一些判断逻辑。

本节中我们列举了几个 Sass 的 JavascriptAPI ,根据下图回忆一下吧:


联系我
置顶