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是推荐模块系统。

浙公网安备 33010602011771号