全栈独立开发,你会分开还是同时开发前端与后端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
witcat
V2EX    程序员

全栈独立开发,你会分开还是同时开发前端与后端

  • &bsp;
  •   witcat 2023-07-03 22:32:45 +08:00 4720 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一种是把所有服务都在本地跑起来,前端改一点,后端改一点。
    另外一种就是后端先开发好一部分,部署到某个测试环境,然后再开发前端的部分。

    问这个问题,主要是因为在团队中不管单独做前端、后端,体验都很好,可以专注在当下的事情上,这是我认为第二种做法的好处(基础设施前人已经配置好了)。
    但如果是个人项目,我觉得最重要的是快速做出效果,配置自动化逻辑和运行条件会花很多时间(或者流水线故障了也需要花时间解决)。

    第 1 条附言    2023-07-03 23:35:53 +08:00

    我可能表达的不是很清楚:其实先开发前后都是可以的,如果先开发前端,也可以先mock最后再联调。
    我想问的是后端这边,你们会做完一部分,就部署一次吗?因为部署也是花时间的。
    但是如果全都在本地的话,那么可能需要同时跑很多服务,举一个例子,可能需要开这么多:

    • docker:redis、mysql、nginx....
    • 后端:不同语言的后端
    • 前端:Vite之类的

    这样会干扰比较大,而且其中一个没有打开,项目都跑不起来
    因为每次因为这个都心烦意乱的,但是觉得为这个搞些自动的东西又麻烦,想问问你们是怎么做的

    29 条回复    2023-07-05 14:51:11 +08:00
    gujuji
        1
    gujuji  
       2023-07-03 22:35:03 +08:00 via iPhone
    肯定是先细分然后后端最后前端
    xiaoxiaoming01
        2
    xiaoxiaoming01  
       2023-07-03 22:42:25 +08:00 via Android   1
    先写前端,就当做画原型,理思路,然后再写后端。
    hustlibraco
        3
    hustlibraco  
       2023-07-03 22:54:04 +08:00
    独立开发前后端不分离岂不快哉
    haikea
        4
    haikea  
       2023-07-03 22:58:45 +08:00
    先后端吧,再前端
    mzDV4TUeHyesLbUQ
        5
    mzDV4TUeHyesLbUQ  
       2023-07-03 23:01:54 +08:00
    先分块,针对一个块是先后端再前端最后调调,然后第二个块。
    xiaoqidev
        6
    xiaoqidev  
       2023-07-03 23:10:38 +08:00   6
    独立开发多年,现在基本是:写一个前端组件->写后端->前后端调通->下一个组件,想到那写到那,没有原型、没有任何规范可言、也不跟其他人协作、主打一个能用就行
    dode
        7
    dode  
       2023-07-03 23:17:27 +08:00 via Android
    总是有点误差,后台接口还要微调
    jeesk
        8
    jeesk  
       2023-07-03 23:21:38 +08:00
    先有功能,再交互,再看需要哪些接口, 然后反推。 不够的接口在追加。
    vsitebon
        9
    vsitebon  
       2023-07-03 23:23:47 +08:00
    先弄好原型图,然后想会有哪些接口需求,做好数据模型,接着先开发前端,而后开发后端来满足前端能跑的需求,接着优化后端,最后优化前端(不断循环)
    Leviathann
        10
    Leviathann  
       2023-07-03 23:30:40 +08:00
    我一般是先前端,接口直接返回伪数据即可
    hamsterbase
        11
    hamsterbase  
       2023-07-03 23:34:32 +08:00
    为了以后能更好的维护,我选择先文档,然后测试,最后开发。


    1. 先写需求文档
    2. 写模型的 spec
    3. 写后端 service
    4. 写后端单元测试
    5. 写后端 API
    6. 写后端集成测试(测试 API
    7. 写前端集成测试 (测试交互
    8. 写前端
    pytth
        12
    pytth  
       2023-07-03 23:57:42 +08:00 via iPhone
    写后端先,然后写前端的时候有数据可以用,交互也可以一次调通,我认为省时一些。
    alexapollo
        13
    alexapollo  
       2023-07-04 00:11:58 +08:00
    先用 https://github.com/geekan/MetaGPT 生成整体骨架,然后再填内容或许是个好主意。

    如果是我完全手写,我现在越来越不倾向于在一个人工作时做明确的前后端接口定义,OpenAPI 3.0 的 spec 描述本身就已经非常冗长了。如果可以用 gradio/streamlit/pyreact 等框架做的,我肯定不会再独立写一套前端
    liuhan907
        14
    liuhan907  
       2023-07-04 00:12:30 +08:00   1
    我选择用 blazor server 一把梭 (
    star7th
        15
    star7th  
       2023-07-04 08:50:17 +08:00
    先画好大致原型,确定有什么功能。这个原型不必好看,主要是给自己固定下来,明确需要什么功能。

    不然每写一下代码都要在脑海里拉一遍整个产品,很累的。有原型是最好的。

    然后,按功能分解。比如说登陆注册功能。我会把登陆注册后端接口写好,然后写登陆注册的前端。

    然后是另一个功能的后端,接着是前端。

    至于你说的部署后端花时间,比如说 redis 、mysql 、nginx , 我感觉你的工作方式有问题。这种都是自动化的东西,一次性配置好的东西。你不愿意花时间去做好自动化,那你就要每次都烦。一次性付出的时间精力,跟每次都付出时间精力,很明显后者麻烦多了。

    你的问题只是来源于下不了决心做基础环境的配置。那你的效率肯定没法高起来,无论做前后端。
    flytsuki
        16
    flytsuki  
       2023-07-04 08:55:22 +08:00
    先写 api,再写界面
    cangcang
        17
    cangcang  
       2023-07-04 09:05:05 +08:00
    对哪边框架不熟,就先写哪边
    dddd1919
        18
    dddd1919  
       2023-07-04 09:18:41 +08:00
    先写页面,再 API ,然后就可以直接页面调试了,mock 不是给自己找事么
    chengguang
        19
    chengguang  
       2023-07-04 09:28:42 +08:00
    @xiaoxiaoming01 实际体验来看,这个靠谱!
    horizon
        20
    horizon  
       2023-07-04 09:30:04 +08:00
    nextjs 一把梭,不过先要画好原型。。
    tool2d
        21
    tool2d  
       2023-07-04 10:12:43 +08:00
    我以前是重后端,轻前端。因为前端要实现复杂功能,挺麻烦的。

    但是现在随着前端技术越来越强,反而是轻后端了,甚至直接把后端当成轻量级 RPC 模块。主体逻辑尽可能都塞进前端。
    gogogo1203
        22
    gogogo1203  
       2023-07-04 10:23:15 +08:00
    对独立开发者来说 前后端确实比较重. 所以现在 firebase\supabase 这种数据库即后台的服务很流行。 我用了 supabase + sql function + edge function, 全部解决我需要的 curd 功能。使用 vercel 自动部署前端。 大部分精力都放在前端了。
    unco020511
        23
    unco020511  
       2023-07-04 11:38:54 +08:00
    当然是分开,分开是最快的
    javahuang
        24
    javahuang  
       2023-07-04 12:41:06 +08:00
    同时开发前端和后端。写一个新功能时,先设计好数据库,再给后端代码框架写出来,然后开发前端功能,中间穿插着改前后端代码。
    witcat
        25
    witcat  
    OP
       2023-07-04 13:13:34 +08:00 via iPhone
    @gogogo1203 确实,冷静下来想 supabase 就足够了。
    kinge
        26
    kinge  
       2023-07-04 13:17:58 +08:00
    先出设计稿,在写后端,最后写前端. 必然是前后端分离更有优势,后期容易维护一点.全部写在一起会导致你的 project 越来越大,文件越来越多
    gogogo1203
        27
    gogogo1203  
       2023-07-04 13:58:04 +08:00   1
    @witcat 现在的工具就是几行代码搞定的事. rate limit 弄个 upstash redis. file storage 自带,auth 自带。supabase doc 里有个可以白嫖的 chatgpt, 代码让它写,自己改改测测,粘贴到 sql editor 就可以上线了。 整个流程不要太舒服。 以前用 Go CURD, 框架稳定以后,各种 hanlder/model 加上数据 parser ,全是体力活。
    meetqyx
        28
    meetqyx  
       2023-07-05 14:45:19 +08:00   2
    我是前后端一把梭,使用 pnpm workspace 。
    数据库用的 sqlite + prisma, 接口用 trpc ,桌面 App electron 不区分前后端。
    单元测试用 vitest.

    meetqyx
        29
    meetqyx  
       2023-07-05 14:51:11 +08:00
    补充:代码层面好像也区分了前后端,但是运行的时候,直接启动就行了,不依赖 nginx docker 等。

    我感觉 pnpm workspace 方式比较适合独立开发者。

    写 API 接口 的时候,我会先写一点简单的单元测试,保证 API 正常调用没问题,等在应用层调用的时候,不会前后端到处定位 Bug 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2680 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:53 PVG 22:53 LAX 07:53 JFK 10:53
    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