V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  程序员

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

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

    写了几个月的 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 但因为不搞跨平台所以还不如直接上原生的)
    sjhhjx0122
        3
    sjhhjx0122  
       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   ·   实用小工具   ·   967 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:51 · PVG 04:51 · LAX 12:51 · JFK 15:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.