uniapp 26 sass-embedded 和 sass区别

sass-embedded 和 sass区别

sass-embedded 和 sass 都是 Sass 官方维护的编译器,底层同为 Dart Sass,核心区别在运行方式:sass 是纯 JS/WASM 实现,sass-embedded 是独立原生 Dart 进程,编译更快。

🚀 核心差异

1. 运行机制: sass 把 Dart 编译成 JavaScript 和 WASM,直接跑在 Node.js 里,跨平台兼容性极好;sass-embedded 在本地启动独立 Dart 编译服务进程,Node.js 通过嵌入式协议通信,编译逻辑跑在原生 Dart 虚拟机上,不经过 JS/WASM 转换层。

2. 编译性能: sass-embedded 在大型项目、持续监听、高频编译场景下更快,因进程复用和预热机制,冷启和增量编译都占优,像常驻服务待命;sass 每次在 Node 子进程里拉起 Dart Sass,有固定启动成本。 中型项目实测编译耗时从 5.8s 降到 1.9s。

3. API 兼容性: 两个包提供完全一致的 JavaScript API,sass-embedded 可无缝替换 sass。

4. 平台支持: sass 全平台可用,安装无需下载平台相关二进制;sass-embedded 仅支持 Dart 支持的平台(Windows、macOS、Linux),安装时按平台下载对应原生二进制。

📊 快速对比

维度 sass sass-embedded
运行方式 纯 JS/WASM 独立原生 Dart 进程
编译速度 中等 更快,大型项目优势明显
异步性能 同步模式更快 异步模式更快
跨平台 全平台 仅 Windows/macOS/Linux
安装 无需下载二进制 需下载平台二进制

🛠️ 怎么选

  • 大多数项目:用 sass 就够,官方推荐默认方案,无痛切换,兼容性最好。
  • 大型项目、团队多人频繁跑 dev server、追求极致编译性能:选 sass-embedded,感受会更明显。

⚠️ 注意事项

  • 两者选一个安装,不要同时装。
  • 用 webpack 时,sass-embedded 需把 sass-loader 升级到 v12.6.0+,并将 API 配成 modern-compiler,否则不会生效。
  • 老项目迁移时注意 Dart Sass 新语法:/ 除法需改写为 math.div(),@use 和 @forward 是推荐模块系统。
posted @ 2026-11-01 10:19  超轶绝尘  阅读(6)  评论(0)    收藏  举报