当你用 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/