三门语言
技术栈这件事,想了很久。
不是没走过弯路。React、Vue、Flutter、Electron,该碰的都碰过。每一个都像是正确答案——大厂背书,招聘市场认可,Stack Overflow 上永远有人回答你的问题。
可总觉得哪里不对。
企业的逻辑
后来想明白了。企业选技术,和我选技术,根本不是一回事。
他们要的是:招得到人,走了有人接,出问题能找到答案。React 不是因为最好才流行,是因为 Facebook 推,先发优势滚起来了,招聘池变大了,于是更多公司跟进,于是招聘池更大。
一个自我实现的预言。
jQuery 当年也稳。但 React 还是取代了它。说明企业也不是真的求稳,是求"安全"——大厂背书的那种安全,从众的那种安全。
独立开发者的逻辑
我不需要招人。不需要担心谁离职。不需要向任何人解释为什么用这个不用那个。
我需要的是快。
一个想法,能不能两周做出来。做出来不行,能不能再花两周换个方向。一年下来,能试几次,能错几次,能对几次。
这是独立开发者真正的风险计算。
Svelte
写 Svelte 的时候,代码少了三成。不是夸张,是真的少。
<script>
let count = 0
</script>
<button on:click={() => count++}>
{count}
</button>
没有 useState,没有 useEffect,没有 Virtual DOM。写完就是写完了。
有人说这是冒险。用一个"小众"框架,万一死了怎么办。
我算了一下。最坏情况,Svelte 真的没人维护了,我的代码还能跑。实在不行,重写一个项目也就几周。而省下的时间,一年能多做三个项目。
哪个风险更大?
Python 与 Flet
桌面应用这件事,绕了一大圈。
PyQt 太繁琐,一个按钮写二十行。Electron 太重,随便一个应用一百多兆。Tauri 很好,但我要调用的是 Python 生态——LLM、数据处理、科学计算。走 sidecar 的话,优势全没了。
Flet 是基于 Flutter 的 Python 框架。1.0 刚发布,API 稳定了。
几行代码,Windows、macOS、Linux、Android、iOS 都能跑。
UI 定制性不如 Web 技术,只有 Material Design 那一套。但做工具类应用够了。工具卖的是功能,不是脸。
Swift 与 SwiftUI
复杂应用另说。
如果真要做精品,做那种用户愿意付高价的东西,原生体验是绕不过去的。iCloud 同步、系统级集成、丝滑的动画——这些 Flet 给不了。
SwiftUI 的学习曲线陡。但 Apple 用户付费意愿高。一个平台做精,好过三个平台做烂。
于是放弃了 Windows 和 Android 的复杂应用市场。听起来很可惜,但精力有限。
三门语言
最后定下来的技术栈,画成表格是这样的:
| 语言 | 场景 | 工具 |
|---|---|---|
| JavaScript | Web 优先 | SvelteKit + Honojs |
| Python | 跨平台工具 | Flet |
| Swift | Apple 精品 | SwiftUI |
三门语言,不多。
JS 打天下,能用 Web 解决的都用 Web。Python 做工具,调用生态最方便。Swift 做精品,只服务 Apple 用户。
各有边界,不重叠。
写得顺
以前写 React,总有种被架着走的感觉。状态要 useState,副作用要 useEffect,依赖数组忘了加就出 bug。代码能跑,但写的时候心里堵。
现在不一样。
Svelte 写起来像写 HTML,该响应的自己响应。Flet 写起来像搭积木,几行代码一个界面。SwiftUI 声明式的语法,想什么写什么,不用绕。
语法简单,心智负担小,写完一看,干干净净。
这种感觉很重要。写得顺,才写得久。
求职的事
有人会问,这套东西找工作怎么办。
确实,Svelte 不是主流,Honojs 更小众,Flet 招聘市场几乎没人要。
但 SwiftUI 是对的。JS 基础是通的。Svelte 到 React,两周能切换。真要找工作,花三个月准备,足够了。
不是说不重要。是说可以先不想。
独立开发这条路,走通了就不需要求职。走不通,三个月补课,也不是什么大事。
结尾
有时候想,技术选型这件事,和人生选择很像。
有人选大路,有人选小路。大路人多,小路快。
两种走法,两种活法。
走哪条,自己清楚就好。