• 首页
  • 首页
  • 乱系短篇合集合集儿媳
  • 靠b猛视频大全视频免费
  • 男女拍拍拍的全过程免费
  • 继去开来的 Sass 3 代编译器:Ruby Sass、Node

    发布日期:2022-01-13 13:17    点击次数:70

    为了简化形式的描述,涉猎器设计了 css 行为 DSL(周围特定说话)。css 写首来浅易,但在许众方面都不太方便,比如不声援嵌套,代码比较冗余;不声援继承和同化,代码不益复用等。

    为了给 css 扩展代码结构和动态计算的能力,社区展现了一些编译为 css 的预处理说话,比如 sass、less、stylus 等。

    此外,还有 postcss 这栽后处理器,它是从 css 编译到 css,编译的过程中做各栽分析和转换。

    less、stylus 的编译器都是 js 写的,而 sass 就比较稀奇了,3 代编译器都不是 js 写的。

    今天,吾们就来聊下 sass 的历史:sass 的 3 代编译器。

    ruby sass

    sass 最早是 2006 年由 ruby 开发的,行为和它 web 框架的模版引擎 haml 配套的编写 css 的说话。由于比较益用,所以前端也都在用。

    sass 编译器是用 ruby 开发的,而 ruby 是一门注释型说话,所以前端开发想编译 sass 就必要在本地安置 ruby。

    后来,Node.js 的展现推动了前端工程化的发展,也就是用 Node.js 来写前端用的编译打包等工具链。而 Node.js 只声援 c++ 这栽编译型说话的扩展包,ruby sass 就用不了了,因此展现了 node-sass。

    直到 2019 年 3 月,ruby sass 宣布不再维护,sass 最早的编译器退出历史舞台。

    node-sass

    里用 c++ 实现了 sass 的编译器,叫做 LibSass,和 node 做了集成,就是 node-sass 这个包。

    自然,它同样也能够和别的说话集成,比如 go、java 等。

    node-sass 让吾们能够在 Node.js 里经过 api 来编译 sass 代码,顺答了前端工程化的大潮流。

    而且 node-sass 是用 c++ 写的,编译速度比 ruby sass 快许众。

    只不过,node-sass 由于是一个 c++ 模块,因此安置的时候要和 node 版本对答,不然就会编译报错,这点比较麻烦。

    在 github 能够查到 node 和 node-sass 的版本对答有关:

    node-sass 望首来挺不错,编译速度快,声援 Node.js 调用。固然要仔细下和 node 版本的对答有关,但题目不大。

    但是,node-sass 已经被标记为过时了,这意味着它也会徐徐退出历史舞台。

    为什么呢?

    主要是由于维护速度跟不上了。

    就像 TS 是 JS 的超集相通,SASS 也是 CSS 的超集。超集意味着 TS Compiler 要声援 JS 的各栽新语法,SASS 也要声援 CSS 的各栽新语法,在这个基础上再迭代本身增补的那些语法。

    SASS 团队的两个主要维护者感觉本身声援 CSS 新特性的速度跟不上了,而且社区展现了 dart-sass 这个对 css 新特性声援更益的 sass 编译器,随着时间的推移,CSS 新特性声援上差距越来越大。最后,在 2020 年 10 月份,node-sass 宣布了不再不息声援新特性,标记为了过时,保举行使 dart-sass。

    在 node-sass 博客上有云云一段话,展现了他们的无奈:

    经过 Sass 中央团队的众次商议,吾们得出的结论是,是时候正式宣布 LibSass 和基于它构建的包(包括 Node Sass)已被舍用。几年来,很清晰 LibSass 背后根本异国有余的工程带宽来使其与 Sass 说话的最新发展保持同步(例如,最新的新说话功能是在2018 年 11 月增补的)。尽管吾们期待望到这栽模式发生转折,但即使是永远 LibSass 贡献者 Michael Mifsud 和 Marcel Greter 的特出做事也无法跟上CSS和 Sass说话开发的迅速步伐。

    就云云,node-sass 也算是推出了历史舞台,但是它对前端工程化的贡献是不可磨灭的。

    吾们再来望下 sass 编译器的继任者:dart-sass。

    dart-sass

    dart-sass 毫无疑问是用 dart 来写的 sass 编译器。dart 是 flutter 的编程说话,能够编译为 js,因此它挑供的 npm 是 js 的,不必要像 node-sass 相通和 node 版本有绑定有关。

    下载后的 npm 包能够望到 一个 sass.dart.js,这个就是用 dart 编译出来的:

    由于 dart-sass 的 npm 包的编译是用 js 做的,速度上会比 node-sass 慢,但是它主要胜在对 css 的特性声援的全,而且由于是 js 包,安置很方便。

    dart-sass 代外着异日,也是被官方保举的 sass 编译器。

    三代 sass 编译器

    介绍完了三代编译器,吾们来浅易做下回顾:

    ruby sass 是最早的 sass 编译器,用 ruby 写的,因此不克被 node 调用,但是它是开创者,历史功绩列第一位。只是必要安置 ruby 来实走,比较麻烦。

    node-sass 是顺答前端工程化潮流而展现的 node 包,是对用 c++ 实现的 sass 编译器 LibSass 的封装。由于用 c++ 编译,因此速度更快。挑供了 Node.js 的 api,撑持了前端工程化的大潮流。历史功绩列第二位。只是必要 node-sass 和 node 版本的对答比较麻烦。

    dart-sass 是用 dart 实现的 sass 编译器,挑供的 dart-sass 的包是 js 的,由 dart 编译而来。益处是对 css 新特性声援的更全,而且也异国和 node 版本的绑定有关。

    ruby sass 和 node-sass 都已经是历史,dart-sass 是 sass 编译器的异日。

    总结

    css 欠缺代码结构能力和动态计算能力,因此社区展现了一些 css 预处理器:sass、less、stylus。

    less、stylus 的编译器都是 js 写的,最稀奇的是 sass,它的三代编译器别离是 ruby、c++、dart 写的,都不是 js。(这点在工程化周围也很稀奇,js 的编译器都是从 js 逐步发展到 rust、go 等别的说话,而 sass 的编译器是从别的说话徐徐切回到了编译成 js 的说话)

    ruby sass、node-sass 都已经过时了,但是它们对前端工程化的贡献不可磨灭,dart-sass 代外着 sass 编译器的异日,期待它能接过进步们的接力棒,继去开来,做的更益吧。

    【编辑保举】

    鸿蒙官方战略配相符共建——HarmonyOS技术社区 Kubernetes容器平台架构解读 支付宝 App 集五福版发布:福相伴,五福,马上到! Windows 11 22526新版修复大量题目!新特性抢先望 WiFi7有众强?比WiFi6高三倍,速度快如飞 Python再获年度编程说话,微柔或成最大赢家