专为自由职业、独立开发者提供技能分享交流学习成长的平台,按 Ctrl+D 收藏我们
关于 积分 赞助 社群 投稿

爱网赚i5z.net

  • 首页
  • 发现
    • 有趣产品
    • 项目分享
    • 技能分享
    • 必备工具
    • 苏米杂谈
  • 独立开发者
    • 开发者周刊
    • 开发者故事
  • 实用资源
    • 建站资源
    • 精品教程
    • 域名优惠
    • VPS优惠
  • 独立开发导航
  • 更多
    • 标签云
    • 排行榜
    • 查域名
    • 留言板
    • 小卖铺
  • 登录
  • 首页
  • 发现
    • 有趣产品
    • 项目分享
    • 技能分享
    • 必备工具
    • 苏米杂谈
  • 独立开发者
    • 开发者周刊
    • 开发者故事
  • 实用资源
    • 建站资源
    • 精品教程
    • 域名优惠
    • VPS优惠
  • 独立开发导航
  • 更多
    • 标签云
    • 排行榜
    • 查域名
    • 留言板
    • 小卖铺
当前位置: 首页 » 建站资源

RN、Flutter、Electron,全被 TS 一锅端了!

8小时前 15 0

今天苏米要分享一个让我眼前一亮的方向:TypeScript 不再只是配合浏览器、Node 来跑前端或跨端,而是被一个叫 Perry 的新项目,直接“编译”成原生 App。

没有 Node、没有浏览器壳、更不用 Electron。简单说,TypeScript 第一次认真尝试做一门能“产出原生程序”的语言。

跨平台开发,其实一直在“绕路”

这几年跨平台方案很多,但大多是在“脚本世界”和“系统世界”之间搭桥,取舍明显:

Electron:简单,但代价很重
本质是把 Web 技术塞进桌面:JS → Chromium → 应用。
- 优点:开发快、生态全、上手友好。
- 缺点:占内存、启动慢、包体积大,界面质感也更像网页。

React Native:接近原生,但有成本
路线是桥接:JS → Bridge → Native UI。
- 优点:渲染原生组件,交互质感更正。
- 痛点:JS 与原生频繁通信,复杂交互下容易遇到性能、状态同步的问题;升级与原生依赖管理也要心智投入。

Flutter:体验稳定,但路线不一样
直接自己画 UI:Dart → Skia → GPU。
- 优点:一致性强,性能稳定,所见即所得。
- 代价:自带一套 UI 世界,与系统原生控件是两套体系;包体积、平台特性适配、平台无障碍和系统外观跟随要额外处理。

这些方案的共同点:让“脚本语言”尽量去适配“原生环境”。而 Perry 选择了另一条路。

Perry 在做什么?

Perry 把问题反过来问:为什么一定要“运行” TypeScript?能不能直接“编译”?

它的基本流程是:

TypeScript
  ↓
SWC 解析(TS → 更底层表示)
  ↓
LLVM
  ↓
Native Binary(二进制可执行文件)

产物是一个真正的本地可执行文件,意味着:

  • 几乎无启动延迟,不再拉一个浏览器内核
  • 不需要额外运行时环境(项目宣言:No runtime. No Electron. Just native binaries.)
  • 发布就是一个二进制,更像 Rust/Go 的交付方式

更重要的是:UI、系统能力、事件循环等,都在编译期决定,运行起来就是“纯原生形态”。这和“边跑边桥接”的模式很不一样。

需要提醒的是,这类方案通常会从 TypeScript 的一个子集起步:动态特性(如 eval、部分反射、元编程)可能受限,NPM 生态也不是装了就能用,具体以项目文档为准。此外,调试、热重载、增量编译、跨平台链接器细节,都会逐步完善。

如何快速上手(5 分钟跑起来)

最快路径(确保先装好系统编译工具,见下一节):

  1. 安装 Perry
npm install @perryts/perry
  1. 写一个最简单的 TypeScript
// hello.ts
console.log("Hello Perry");
  1. 编译并运行
npx perry compile hello.ts -o hello
./hello

此时你得到的就是一个原生可执行文件。如果不想安装,直接一次性跑:

npx -y @perryts/perry compile hello.ts -o hello

小提示:

  • 首次使用建议在空目录里实验,避免工具链冲突
  • 若编译报错,多半是缺编译器或环境变量(见下一节)
  • 可用系统命令验证产物(如 macOS/Linux 用 file ./hello 查看架构)

环境要求(很容易踩坑)

Perry 依赖系统的本地编译工具链:

  • macOS:安装 Xcode Command Line Tools
    执行:xcode-select --install
  • Linux:安装 gcc/clang 及构建工具
    例如 Debian/Ubuntu:sudo apt-get install build-essential clang
  • Windows:安装 Visual Studio Build Tools(含 MSVC、Windows SDK)
    安装后在“x64 Native Tools Command Prompt for VS”里编译更稳妥

常见问题:

  • PATH 未生效:重启终端或用对应的开发者命令行
  • 跨平台编译:优先在目标系统本地编译;跨平台交叉编译需额外配置
  • 杀毒/签名:macOS 需签名/隔离设置,Windows 可能被 Defender 拦截,按平台规范处理

它怎么做跨平台?

很多人会问:“UI 怎么办?”Perry 的做法很直接——用各平台的原生 UI:

  • macOS → AppKit
  • Windows → Win32
  • Linux → GTK
  • iOS / Android → 各自原生框架

例如写一段:

App({
  title: "My App",
  body: Text("Hello")
})

在不同系统上,会在编译期变成不同实现:

  • macOS → NSWindow、NSTextField
  • Windows → HWND、系统控件
  • Linux → GTK 组件

关键点:这些转换发生在编译期,而不是运行时。所以程序跑起来时,已经是各平台的原生控件,启动轻、占用低、系统级无障碍与输入法等也更容易融入。

当然,使用原生控件意味着:

  • 不同平台外观、尺寸、布局规范各不相同,需要写适配
  • 统一风格要靠设计系统与组件封装,而不是“自绘一致性”
  • 移动端需要考虑打包、签名、应用商店规范

它和 RN / Flutter 的关系

很多文章喜欢把它们放一起对比,但定位其实不在同一层:

  • RN / Flutter 更像“UI 框架”
  • Perry 更像“语言 + 编译器”

可以这样理解:

  • RN:用 JS 控制原生(运行时桥接)
  • Flutter:自己画 UI(渲染一致)
  • Perry:直接生成原生程序(编译期决定一切)

选型建议(粗略经验):

  • 优先追求启动速度、内存占用、系统感知强、包体更小 → 关注 Perry
  • 要跨平台一致的 UI、成熟生态与插件、热更新/动态化 → Flutter/RN 更即插即用
  • 已有大量 Web 代码、团队更熟前端栈 → Electron/RN 的迁移成本更低

当前阶段,Perry 更像 Rust/Go 的工程化体验在 TS 世界的投射,而不是一个“大而全”的 UI 框架。

写在最后

Perry 做了一件很有野心的事:把 TypeScript 从“需要运行环境的语言”,往“可以直接生成程序的语言”方向推进了一步。对独立开发者来说,这意味着你可以用更熟悉的语法,拿到更接近原生工程的产物。

现实建议:

  • 早期尝鲜为主,评估功能覆盖和生态可用性
  • 做小工具、系统级面板、启动器、原生壳子是很适合的切入点
  • 关注调试、日志、崩溃上报、升级分发等工程环节的配套

如果你对跨平台开发感兴趣,值得一试!

Perry 官网:https://www.perryts.com/zh-Hans/
Github 地址:https://github.com/PerryTS/perry

声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
未经允许不得转载:RN、Flutter、Electron,全被 TS 一锅端了!
#Perry #TypeScript #Flutter #Electron 
收藏 1
推荐阅读
  • Boneyard:拒绝手写骨架屏!正式“干掉”骨架屏!
  • 独立开发者建站必备:15个顶级UI设计资源站,用 AI 模板赋能你的 Vibecoding 界面设计
  • RN、Flutter、Electron,全被 TS 一锅端了!
  • HTMLrev:独立开发者的宝藏UI模板库!15000+前端模板助力快速开发!
  • Administrative-divisions-of-China:全国五级行政区划数据集
评论 (0)
请登录后发表评论
分类精选
2025年18个icon图标库推荐:独立开发最值得收藏的建站素材资源
3041 9月前
独立开发者建站必备:15个顶级UI设计资源站,用 AI 模板赋能你的 Vibecoding 界面设计
1715 9月前
21st.dev:独立开发者AI建站,高效开发前端必备组件库
1366 9月前
站长必备:10款免费可商用的中文字体下载推荐
1358 7月前
BillionMail:打造属于你的开源邮件营销系统,轻松发亿封邮件,独立站出海必备
1282 10月前
8个独立开发者建站必备的设计资源,直接复制代码拿来就用
1278 9月前
Public APIs:开发者的公共API宝库,Star 350K!
1239 9月前
个人项目也能发验证码了?独立开发者短信验证码解决方案,无需企业认证
1235 9月前
Bing Search API平替,秘塔搜索 API:性价比首选,还支持播客搜索
1195 8月前
AI 生图类 SaaS:这两个开源项目直接拿来改就能上线了!独立开发必备
1159 9月前

文章目录

分类排行
1 国外最佳 Windows VPS 推荐:Hostwinds vs RackNerd 全面对比评测
2 RN、Flutter、Electron,全被 TS 一锅端了!
3 Boneyard:拒绝手写骨架屏!正式“干掉”骨架屏!
4 Lupine:一个框架统治前后端,真正的全栈开发集大成之作
5 NginxPulse:一个轻量级Nginx日志分析神器,让网站访问数据一目了然
6 SSL证书:分享一个免费申请90天SSL证书的网站
7 宝塔面板免费领取一年SSL证书教程
8 Laranode:又一款免费轻量的服务器面板,还是宝塔平替?
9 Happy-Captcha:一款基于JAVA实现的开源免费验证码系统,1行代码得到炫酷的验证码
10 Isocons:3秒找到精准图标的效率神器
©2015-2024 i5z爱网赚出海分享 版权所有 · www. i5z.net 闽ICP备15002536号-6
免费影视导航 花式玩客 免费字体下载 产品经理导航 Axure RP 10 免费Axure模板 网赚分享 跨境数研所 聚玩盒子 申请友联