我发现 React 真的非常适合用来写本地客户端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ChrisFreeMan
V2EX    程序员

我发现 React 真的非常适合用来写本地客户端

  •  
  •   ChrisFreeMan 2023-09-19 22:40:35 +08:00 3357 次点击
    这是一个创建于 752 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了几个月的 React.js 配合 Electron, 感受就是,越用越舒服,已经不想回去写 swiftUI 了,React 的设计真的非常好,虽然它是个框架,但是它却并没有太多自己的规则和语法,所有的规则都是沿用 Js 本身的语法 + Html 本身的语法,所有的东西都是可预料的,理解了 hooks 的原理,基本上很多东西都能够预料,很多问题都能定位,而且上手后,基本上没怎么看过官方文档,非常非常优秀的设计。吹爆,我现在是 React 铁粉了。

    31 条回复    2023-09-21 13:40:59 +08:00
    jlak
        1
    jlak  
       2023-09-20 00:44:49 +08:00 via iPhone   1
    懂个钩子基本就差不多了,实在好用
    gap
        2
    gap  
       2023-09-20 06:42:42 +08:00 via iPhone
    swiftui 会有很多规则吗?我一直写 react 还说最近学学 swiftui 搞搞 iOS 的(虽然也有写 react native 但因为不搞跨平台所以还不如直接上原生的)
    linkopeneyes
        3
    linkopeneyes  
       2023-09-20 08:41:41 +08:00
    如果平常不用 ui 库,试试 solidjs?要不等到被 useEffect 等各种 hook 恶心过了,就又该讨厌了 react 了
    sub166
        4
    sub166  
       2023-09-20 09:08:09 +08:00
    同样经历,但是现在用 solidjs
    enpitsulin
        5
    enpitsulin  
       2023-09-20 09:17:53 +08:00
    还是写得少了 写多了遇的坑一多就会觉得恶心了
    ChrisFreeMan
        6
    ChrisFreeMan  
    OP
       2023-09-20 09:30:48 +08:00
    @gap swiftUI 开发 iOS 没啥毛病,你要是用来写桌面端,是真的难受,但是就算用来写 iOS ,Xcode 也一言难尽,总之苹果的技术栈是真的不好玩
    ChrisFreeMan
        7
    ChrisFreeMan  
    OP
       2023-09-20 09:33:18 +08:00
    @sjhhjx0122
    @sub166 我考虑过了 solidjs ,宣传很美妙,但是这种 one man project 风险太大了,贡献度过于集中在一个人,也许刚起步吧,会继续观望。
    ChrisFreeMan
        8
    ChrisFreeMan  
    OP
       2023-09-20 09:34:31 +08:00
    @enpitsulin 不会不会,我不信还会比 swiftUI 恶心,用 swift UI 开发桌面应用,看啥都眉清目秀
    shunia
        9
    shunia  
       2023-09-20 09:43:33 +08:00
    solidjs 的心智负担比 reactjs 大多了,别信。
    目前的现代前端框架里,只有 react 的心智负担是最小的。
    ChrisFreeMan
        10
    ChrisFreeMan  
    OP
       2023-09-20 09:49:07 +08:00
    @shunia 嗯嗯,在能够遇见的未来,我应该都会紧贴 react 了。把东西舒舒服服顺利做出来才是最重要的。
    RoyRao
        11
    RoyRao  
       2023-09-20 10:11:49 +08:00
    桌面端还是锁死 Cocoa 比较好 另外想问下 OP ,Electron 的 macOS App ,上架 App Store 的流程有什么痛点吗?然后审核会更严格吗?
    ChrisFreeMan
        12
    ChrisFreeMan  
    OP
       2023-09-20 10:15:23 +08:00
    @RoyRao 没有啥痛点,遵守沙盒规则就好了。
    ChrisFreeMan
        13
    ChrisFreeMan  
    OP
       2023-09-20 10:16:45 +08:00
    @RoyRao 可能签名的时候会卡一点,因为自一套流程在 Xcode 上都是全自动的。
    RoyRao
        14
    RoyRao  
       2023-09-20 11:20:07 +08:00
    @ChrisFreeMan #13 是的,就是不清楚 Electron 如何签名,不知道 OP 可否分享一下学习历程?本人有 React 的 web 开发经验和 Swift 的原生开发经验,但是没有尝试过 Electron 上架 App Store
    ChrisFreeMan
        15
    ChrisFreeMan  
    OP
       2023-09-20 11:23:39 +08:00
    @RoyRao 没那么难,electron 有个工具 electron forge 已经帮你搞定绝大部分活了,绝大部分也是自动化,你只是需要手动下载两个证书就可以了。了解一下证书的区别。
    ChrisFreeMan
        16
    ChrisFreeMan  
    OP
       2023-09-20 11:30:43 +08:00
    @RoyRao 在 electron 的官方文档里面说的非常清楚了,基本上就是需要了解的全部了。https://www.electronjs.org/docs/latest/tutorial/mac-app-store-submission-guide 。 如果遇到问题,搜一下本站站友的开源 electron app ,看看他们的项目是怎么搞的,就 OK 了
    duan602728596
        17
    duan602728596  
       2023-09-20 11:41:56 +08:00
    写客户端可能还需要用到 react-router 和 redux
    ChrisFreeMan
        18
    ChrisFreeMan  
    OP
       2023-09-20 12:26:30 +08:00
    @duan602728596 不太理解为啥开发本地应用需要 react-router ,请问下有啥情况会用上,redux 的话也不是很理解,react 不是有自带的状态管理 useContext 吗。
    duan602728596
        19
    duan602728596  
       2023-09-20 12:38:11 +08:00
    @ChrisFreeMan 如果软件有很多界面且不打开新窗口,就需要 react-router 。redux 是数据持久化,保证切换界面时数据不丢失。
    比如我写了一个下载器,当我切换到软件设置时,就要到一个新界面来配置,配置完毕后回到原界面,这是 react-router 做的。当我在软件设置时,正在下载的这个 list 还在,而且回到原界面时还能看到下载进度,这就是 redux 要做的。
    ChrisFreeMan
        20
    ChrisFreeMan  
    OP
       2023-09-20 12:48:06 +08:00
    @duan602728596 明白了,应用类型和交互方式的问题,因为我目前开发的应用都是平铺的。多谢解释。
    kneo
        21
    kneo  
       2023-09-20 13:32:40 +08:00 via Android
    没有自己的规则和语法? Hooks 就是伪装成函数的规则和语法。React 比起旧世界当然是革命性的,但是坑也很多,你写的 React 评价,理想的简直让我以为你用的是 SolidJS 。
    RoyRao
        22
    RoyRao  
       2023-09-20 13:42:10 +08:00
    @ChrisFreeMan #16 好的,感谢老哥指点
    RoyRao
        23
    RoyRao  
       2023-09-20 15:42:03 +08:00
    @ChrisFreeMan #15 刚才去了解了一下 electron forge ,官方说貌似不支持 pnpm 和 yarn berry ,但是我又不想用 yarn v1 ,不知道老哥用的什么包管理器呢?
    ChrisFreeMan
        24
    ChrisFreeMan  
    OP
       2023-09-20 16:09:03 +08:00
    @RoyRao 我用的 NPM
    cuzfinal
        25
    cuzfinal  
       2023-09-20 17:32:50 +08:00
    既然写 react ,不如直接用 [react-native-windows]( https://microsoft.github.io/react-native-windows/),也免得打包一个 v8
    ChrisFreeMan
        26
    ChrisFreeMan  
    OP
       2023-09-20 18:51:10 +08:00
    @cuzfinal 试过了,个人觉得不太行,现在非常不建议入坑,文档缺失,社区小的要死,几乎没啥资料。微软对其的态度估计也是内部使用,顺便开源。
    nodejsexpress
        27
    nodejsexpress  
       2023-09-21 00:32:39 +08:00
    electron 感觉性能太拉胯
    ChrisFreeMan
        28
    ChrisFreeMan  
    OP
       2023-09-21 10:57:15 +08:00
    @nodejsexpress 我感觉性能很好,性能反而不是它的槽点。主要槽点还是打包体积的问题。你可以试试我开发的应用。在我的个人介绍里面。
    nodejsexpress
        29
    nodejsexpress  
       2023-09-21 12:04:11 +08:00
    @ChrisFreeMan 好的,谢谢大佬。
    主要是用的有道云笔记等 Electron 应用,给我的印象是加载太慢了,内存飙升。
    ChrisFreeMan
        30
    ChrisFreeMan  
    OP
       2023-09-21 12:31:34 +08:00
    @nodejsexpress 没用过,但是 electron 要是用网页开发的思想来开发的话,比如靠网络加载界面,依赖 webview 组建,就会变得很慢,很吃内存。
    RoyRao
        31
    RoyRao  
       2023-09-21 13:40:59 +08:00
    @ChrisFreeMan #24 好的,感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5886 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:07 PVG 14:07 LAX 23:07 JFK 02:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86