当前位置: 首页 > news >正文

什么是swc?

🧩 一句话总结

SWC = 一个用 Rust 写的、比 Babel 快 10~20 倍的 JS/TS 编译器。


🚀 它的作用

SWC 的核心用途是:

  1. 转译(Transpile)

    • TypeScript现代 JavaScript(ESNext) 转换成浏览器可以执行的旧版 JavaScript(例如 ES5)。

    • 类似于 Babel 的工作,但速度更快。

  2. 压缩(Minify)

    • 类似 Terser,可以压缩、混淆代码,减少 bundle 体积。

  3. 构建(Build / Bundle)

    • 虽然 SWC 不是一个打包器(Bundler),但可以被 Webpack、Vite、Next.js 等工具用作 底层编译引擎


⚙️ 常见的使用场景

场景传统方案SWC替代方案优势
转译 TypeScriptBabel(@babel/preset-typescript)SWC 编译器编译速度提升约10~20倍
压缩打包文件TerserSWC Minifier压缩速度快约10倍
React 项目构建Babel + WebpackSWC + Webpack / Next.js构建和热更新更快
Vite 项目Esbuild(Go 实现)SWC(Rust 实现)性能相近,但更易定制 AST

🧠 SWC 的核心设计思想

SWC 是一个编译器框架,内部分为三个阶段:

  1. Parser(解析器)
    将源码转成抽象语法树(AST)。
    支持 JS、TS、JSX、TSX。

  2. Transformer(转换器)
    对 AST 做各种转换,比如:

    • TypeScript → JavaScript

    • JSX → React.createElement()

    • ESNext → ES5

  3. Code Generator(代码生成器)
    把 AST 再生成可执行的 JavaScript 代码。


🧩 和 Babel 的关系

对比项BabelSWC
实现语言JavaScriptRust
性能慢(单线程)快(多线程)
插件生态非常丰富正在成长中
可扩展性高(可写 Babel 插件)较难(需要写 Rust 插件)
主流框架支持全支持Next.js 已全面使用 SWC

🏗️ 实际应用示例

在 Next.js 中使用 SWC(默认内置):

Next.js 从 v12 起就 默认使用 SWC 替代 Babel 和 Terser
你不需要额外配置,自动享受性能提升。

手动使用 SWC(例如在 Node 项目中):
npm install @swc/core @swc/cli --save-dev

然后在命令行中:

npx swc src -d dist

这会把 src 目录的 TypeScript/JS 文件编译到 dist


⚡ 性能示例

在大项目(如 React + TypeScript)中:

工具编译时间
Babel45 秒
SWC3 秒

速度提升非常明显 🔥


📚 总结

特性说明
名称SWC(Speedy Web Compiler)
语言Rust
功能JS/TS 转译 + 压缩
替代Babel / Terser
优点超高速、多线程、安全性高
缺点插件生态还不如 Babel 丰富

http://www.dtcms.com/a/482453.html

相关文章:

  • 第九章 装饰器与闭包
  • 接口测试案例从哪些维度去设计
  • 协程入门(基础篇)
  • 建设好网站的在线沟通功能广州开发区投资集团有限公司招聘
  • 如何将 iPhone 联系人同步到 Mac
  • 织梦的网站收录不好保定网站建设设计
  • 网络安全之揭秘APT Discord C2 以及如何取证
  • 第五章 神经网络的优化
  • 网络安全主动防御技术与应用
  • 5. 神经网络的学习
  • 响应式网站页面设计怎么写网站建设推广
  • 2025/10/14 redis断联 没有IPv4地址 (自用)
  • 基于多奥品牌设备的车牌识别系统与电梯门禁联动方案,核心是通过硬件信号对接+软件权限映射实现车辆身份与电梯权限的绑定。以下是具体实施步骤:
  • [Backstage] 前端插件 生命周期 | eg构建“云成本”页面
  • extractNativeLibs属性解刨
  • 实现一个通用的 `clone` 函数:从深拷贝到类型安全的 C++ 模板设计
  • dw做网站基础用友财务软件多少钱一年
  • 高端定制网站建设制作网页制作格式
  • java + vue 实现 AI流式输出(打字机效果)
  • Linux网络:使用TCP实现网络通信(服务端)
  • Python Web开发——WSGI接口
  • 第十章:技术路线:成为“技术扫地僧(1)
  • 苹果软件混淆与 iOS 应用加固实录,从被逆向到 IPA 文件防反编译与无源码混淆解决方案
  • Transformers中从 logits 本质到问答系统中的字符定位机制
  • c++11扩展
  • h1z1注册网站百度app官方下载
  • 阮一峰《TypeScript 教程》学习笔记——基本用法
  • LabVIEW腔衰荡信号在线处理系统
  • 为 AI Agent 行为立“规矩”——字节跳动提出 Jeddak AgentArmor 智能体安全框架
  • Arbess CICD实战(12) - 使用Arbess+GitLab实现React.js项目自动化部署