dart-sass和node-sass的区别与eslint的几个选择

今天创建vue3项目,用cli创建的时候出现了css预处理器的选择,node-sass和dart-scss。记得以前都是选择node-sass,他们的区别忘了,重新查了查这两个的区别,发现已经不是之前记忆的区别了。

先说说node-sass,node-sass底层依赖libsass,是C/C++语言开发的。安装问题比较多,随便查一下node-sass安装这个词条就很多(印象中以前都是用这个,没发现安装问题)。另外就是Windows环境使用的时候必须有python2和vs才能编译成功(其实我忘记了有没有这回事)。现在可以不用管这个了,因为sass官方都宣布要弃用了,公告是2020年10月26号发布的。可以去官网看看:

https://sass-lang.com/blog/libsass-is-deprecated

我看了一下,大概意思就是迭代速度慢,无法更新最新功能。我这翻译的渣渣就不翻译了,还是自己看看。

dart-sass现在是官方推荐的,早在2016年10月31号的公告就说明了为什么重写sass和为什么选择dart以及后续的计划,可以去官网看看:

https://sass-lang.com/blog/announcing-dart-sass

大概的意思是sass之前的实现ruby sass迭代容易,但是运行速度慢,不易安装。libsass则是速度快,迭代慢。选择dart,速度是rubby sass的5-10倍,只比libsass慢1.5倍左右。而且dart可以编译输出JavaScript,兼容nodejs。里面用了好多easy to。

所以,以后选择的时候直接选择dart-sass,都不用考虑两个到底是说明区别,记住dart-sass是官方推荐,兼容nodejs,node-sass算是被弃用,不需要考虑用node是不是就一定要用它。

为什么脚手架不直接只出现dart-sass,还出现node-sass选项呢?

创建项目的时候,ESLin提供了几个选择:
ESLint with error prevention only
意思是只有错误的时候才报错,我新建了一个项目,大概试了试,空格、分号之类的都不会报错,只有语法错误才会提示。

ESLint + Airbnb config
网上看见的几乎都是说不严谨格式,并不是,Airbnb是一家叫做爱彼迎的公司,一般来说不同公司都有自己的一套eslint的标准(一般都是大公司),既然这个模式会拿来选择,应该表示算是做的比较好的吧。感兴趣可以看看:

https://github.com/airbnb/javascript

ESLint + Standard config
翻译过来是标准模式,感兴趣的可以看看这个模式的配置,我是看不来,太多了:

https://github.com/standard/eslint-config-standard/blob/master/eslintrc.json

ESLint + Prettier
翻译一下,是追求最完美的一种模式,找了半天没找到这个模式的配置,有知道的可以分享一下。

其实eslint我几乎没用过,关于代码格式,跟同事约定好用哪张格式化之后,直接用编辑器保存自动格式化。

欢迎关注公众号 coding个人笔记

<think>嗯,用户问的是Dart SassNode Sass区别。我需要先回忆这两者的背景演变。记得Node Sass是基于LibSass的,而LibSass已经停止维护了,所以现在Dart Sass是官方推荐的替代品。 首先,得说明它们的实现语言不同。Node Sass用C++,而Dart SassDart,后来转成了JavaScript。这可能影响到安装性能。比如,Node Sass需要本地编译,可能会有兼容性问题,而Dart Sass的纯JS版本应该更方便,尤其是通过npm安装时。 然后,兼容性维护状态是关键点。LibSass停止维护后,Node Sass可能不再更新,新功能可能只出现在Dart Sass里。用户如果还在用Node Sass,可能会遇到问题,比如不支持最新的Sass特性,或者安装失败。 性能方面,Dart Sass在转为纯JS后可能比Node Sass慢,但用户可能更在意稳定性功能支持。不过Dart Native版本性能更好,但可能用户接触的不多,主要用JS版本。 安装方式的不同也要提到,Node Sass需要node-gyp,可能会有编译工具链的问题,而Dart Sass的npm包更简单,尤其是用Dart转JS后的包。 功能差异方面,Dart Sass支持模块系统新语法,比如@use@forward,而Node Sass可能不支持这些新特性。用户如果使用较新的Sass语法,可能会遇到问题,这时候迁移到Dart Sass是必要的。 总结部分要明确推荐使用Dart Sass,特别是因为官方支持未来兼容性。可能还要提到迁移的必要性,比如项目依赖Node Sass的话,需要计划替换,避免后续问题。 需要检查是否有遗漏点,比如版本历史,Dart Sass最初用Dart编写,后来编译成JS,现在作为主推版本。可能用户关心如何迁移,是否需要更改代码,或者性能对比的具体数据?不过可能不需要太深入,除非用户追问。 确保回答结构清晰,分点说明区别,然后给出建议。使用中文,避免专业术语过多,但必要时解释清楚。比如,解释LibSassNode Sass的关系,以及为什么停止维护会影响用户。</think>### Dart Sass Node Sass区别 #### 1. **实现方式** - **Dart Sass** - 最初由 Dart 语言实现,后通过编译为纯 JavaScript 提供 **npm 包**(即 `sass` 包)。 - 目前是 Sass 的**官方首选实现**,持续维护并支持最新语法特性。 - 可通过两种方式运行: - **Dart VM**(高性能,但需安装 Dart 环境) - **纯 JavaScript**(跨平台兼容性强,性能略低)。 - **Node Sass** - 基于 **LibSass**(用 C/C++ 编写),通过 Node.js 绑定调用。 - 因 LibSass 已停止维护(2020 年后不再更新),**Node Sass 被官方弃用**。 - 依赖 `node-gyp` 编译本地代码,安装时需系统支持编译工具链(如 Python、C++ 编译器)。 --- #### 2. **兼容性维护状态** - **Dart Sass** - **完全支持最新 Sass 语法**(如模块系统 `@use`、`@forward`)。 - CSS 新特性(如嵌套语法、自定义属性)保持同步。 - **Node Sass** - 仅支持 **Sass 旧版本语法**(如 `@import`),无法兼容新特性。 - 已冻结更新,未来可能因依赖环境变化(如 Node.js 版本升级)导致安装失败。 --- #### 3. **安装依赖** - **Dart Sass** - 通过 npm 安装: ```bash npm install sass ``` - 无系统编译依赖,纯 JavaScript 实现开箱即用。 - **Node Sass** - 通过 npm 安装: ```bash npm install node-sass ``` - 需提前安装编译工具(如 Windows 的 `windows-build-tools`),易因环境问题失败。 --- #### 4. **性能对比** - **Dart Sass (Dart VM)**:编译速度最快,但需独立 Dart 环境。 - **Dart Sass (JavaScript)**:速度略慢于 Node Sass,但差距可忽略(除非超大项目)。 - **Node Sass**:因底层为 C++,历史版本中性能较好,但因缺乏维护已不推荐。 --- #### 5. **使用场景建议** 1. **新项目**:**必须选择 Dart Sass**(`sass` 包),避免未来兼容性问题。 2. **旧项目依赖 Node Sass**: - 逐步替换为 Dart Sass,并检查语法兼容性(如替换 `@import` 为 `@use`)。 - 修改 `package.json` 依赖: ```json { "devDependencies": { "sass": "^1.63.0" // 替换 node-sass } } ``` --- ### 总结 | 特性 | Dart Sass | Node Sass | |--------------------|--------------------|--------------------| | 维护状态 | 官方维护,持续更新 | 已弃用,停止维护 | | 语法支持 | 最新 Sass 特性 | 仅旧版本语法 | | 安装复杂度 | 简单(无编译依赖) | 复杂(需编译工具) | | 性能 | 中等(JS) / 高(Dart VM) | 高(但已过时) | ✅ **结论**:**始终优先选择 Dart Sass**,确保长期兼容性功能支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值