当你用 Sass 用得飞起时,如果突然听说一种叫 LibSass的sass语言已经火起来了,可能你会跳起来说:『LibSass 到底是个什么鬼!我是不是应该舍弃 Ruby Sass 然后投奔 LibSass , 我难道落伍了 ???』
稍安勿躁,你并没有落伍,读到后面你将了解到 Ruby Sass 跟 LibSass 是相似的产物,而它俩的主要区别体现在接口调用、编译速度、功能支持这三点上
在这片文章里,连同 Ruby Sass 与 LibSass 的优缺点,我会全面地解释两者的区别
Ruby Sass
最开始,Sass 是由 Ruby 编写的,如果你刚使用 Sass 不久,你很有可能在使用的是这种 Sass。只要你本地运行了 Ruby,安装了 Sass,运行了编译器,你就可以使用 Sass 所有屌屌的功能跟特性了。
但是!只要脱离了 Ruby 环境,你的 Ruby Sass 就无法运行了。取决于你的项目文件的大小,Ruby Sass 引擎可能会花很长时间来编译,你的工程越庞大,那编译花费的时间就会越久,在开发大工程时需要尤其注意这点。
如果你的机器没有运行 Ruby,或者在大工程中需要花费很久来把 sass 编译成 css,你会怎么做?
走近 LibSass
LibSass 是 Sass引擎的一套 C/C++ 接口实现,它不依赖 Ruby 环境就可以把sass 编译成 css,因此它能够被集成到其他语言中去。
LibSass自己本身不做任何事,它只是一个库,为了能让它工作,你需要一个包装器(或者是接口实现)来运行这个库,同时来编译你的样式表。这其中最常用的 LibSass 几个包装器分别是 SassC(第一个被开发);node-sass, grunt-sass – 甚至有一个Ruby实现的包装器
举例来说,如果项目中运行了 node-sass, 那么 LibSass 就在 node-sass 包装器在 Node.js 里执行编译时作为核心库存在
为什么选择 LibSass?
使用 LibSass, 你不再需要将开发跟 Ruby 环境依赖捆在一起。使用繁多的包装器,你可以轻而易举地将 Sass 编译集成在几乎所有语言。
使用 LibSass 最棒的一点体现在编译速度上,跟 Ruby Sass 相比,LibSass 非常显著的快了4000%倍。看一看 Ruby Sass, LibSass 以及其它 CSS 预处理器的编译时间对比吧!
兼容 Ruby Sass ?
LibSass 并不完美,很多开发者还在犹豫是否要将代码迁移到 LibSass ,因为涉及到某些功能特性时,它仍然落后于 Ruby Sass。(译者注:目前LibSass 3.3已经完全实现了新旧Ruby Sass的所有功能特性!)
例如,@at-root, @error,以及很多3.4版本 Sass 的新特性在 LibSass 中都不支持。想全面了解 Sass, LibSass, 以及老Sass引擎的功能支持差异,看一看这个网站吧
LibSass 的前途一片光明!
好消息是 LibSass 很快将追上 Ruby Sass 的脚步,只要这一步实现了,两者之间的功能特性将会继续向前发展。很快我们就能兼顾 LibSass飞快的编译速度 与 Ruby Sass丰富的功能 了。
去 SassMeister 就能快速测试 Ruby Sass 与 LibSass 之间的差异!
最后的感想
只要你投入 LibSass 的怀抱, 你就会发现跟使用 Ruby Sass 一样的简单,编译速度却快得多!并且如果你仅仅使用了 Sass 的核心功能,将代码迁移到 LibSass 似乎是没什么风险的。
如果你、你的团队以及你的项目偏向使用 Ruby Sass,那么就坚持使用它!取决于项目大小,LibSass的速度优势带来的价值可能会大于暂时缺失一小部分Sass功能这一劣势损失的价值。
原文链接:http://sassbreak.com/ruby-sass-libsass-differences/