发布日期:2025-10-09 18:05浏览次数:
最近在搞个桌面小工具,寻思着TypeScript这么香,网页能用,凭啥不能拿来写桌面程序?结果上网一搜,嚯,选择困难症都犯了!干脆自己试水,把踩过的坑给你们唠唠。
就是想弄个本地小工具,能读写点用户文件,带个简单界面,最好打包出来别像裹脚布一样大。别动不动整个Chromium那么肥的包进去,用户下完骂我咋办。
听说Tauri挺火,主打轻量,号称不用塞整个浏览器内核,用系统自带的WebView就成。二话不说,哐哐哐照着官网新建项目。
第一步:装环境pnpm create tauri-app
,选个框架(我挑了React+TS模板)。pnpm install
,pnpm tauri dev
。踩坑点:想读写用户文档目录?权限申请烦死人!Tauri默认不让随便动用户文件,得在*里声明白,还要处理一堆安全策略,当场裂开。搞权限搞了一下午,才把文件读写调通。
歇了口气,换下一个目标:Electron。老朋友了,名气大,生态肥。照样起手式:
pnpm create electron-app@latest my-app -- --template=typescript-webpack
(模板挺多,选了个带webpack的)。pnpm run start
。噌!大窗口蹦出来了,那熟悉的Chromium味儿。开发是真方便,*的模块直接用,文件读写?fs
一调用,想读哪读哪,写哪写哪,主打一个肆无忌惮。UI用现成的React组件库,唰唰唰就堆起来了。
痛点来了:启动明显慢半拍,打包…我的老天鹅,一个空白项目打出来都快100M了!塞了个完整Chromium进去能不肥吗?想着加个依赖做点功能,包体积肉眼可见地膨胀。发布?用户下个几百M的玩意儿,就开个计算器?我怕被挂论坛骂。
一个瞄上了,听说以前叫Node-webkit,也是老前辈了。流程走起:
npx degit nwutils/nw-react-template
(社区模板)。运行确实挺简单,感觉像是Electron的简化版?也自带Node和Chromium。文件读写它也方便,跟Electron差不多路子,require('fs')
照样用。
懵圈时刻:打包配置比Electron还迷糊!官方工具难用,文档翻半天没整明白怎么把乱七八糟的资源打成一个干净安装包。社区说要用些第三方打包工具…算了算了,刚被Electron体积劝退,它跟Electron也差不多肥。调试工具用起来,感觉也比前面俩稍微糙点。
选哪个?看你自己!我那小工具还是捏着鼻子选了Tauri——体积强迫症犯了,忍痛搞定了那个权限配置。你要是无所谓大小,闭眼Electron就完事儿!省下来的时间摸鱼不香吗?