Next.JS 可以作为 fullstack 框架吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
dayeye2006199
V2EX    Javascript

Next.JS 可以作为 fullstack 框架吗?

  •  1
     
  •   dayeye2006199 2022-12-04 16:03:55 +08:00 8761 次点击
    这是一个创建于 1045 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是 JS/TS 小白(本职是后端工程师)。
    现在团队有个项目,前端已经用了 Next.JS (配合 TS ),现在在考虑后端的选型,是不是也选择一个支持 TS 的 web 框架,统一语言,方便共享一些数据模型。
    看了一下 Next 的 getServerSideProps ,发觉好像把从数据库里面获取数据(例如调用 ORM)的逻辑写在这个部分也没太大的问题。
    比较复杂的 API 逻辑,比如对接其他第三方的接口,做一些简单的运算,用 API route 似乎也可行。

    想请教一下这么弄会不会有什么问题,代码会不会比较难以管理?
    34 条回复    2023-08-20 17:06:44 +08:00
    TWorldIsNButThis
        1
    TWorldIsNButThis  
       2022-12-04 16:05:36 +08:00
    最近看了一些 trpc 的介绍,感觉配合 nextjs 挺爽的
    搞一个 monorepo ,前后端共享类型和数据校验
    loading
        2
    loading  
       2022-12-04 16:22:12 +08:00
    nset.js+next.js ???
    dayeye2006199
        3
    dayeye2006199  
    OP
       2022-12-04 16:37:33 +08:00 via Android
    @loading 不,只有 next.js
    ifdef
        4
    ifdef  
       2022-12-04 17:05:21 +08:00   2
    Next.JS 是一个基于 React 的服务端渲染( SSR )框架,它可以帮助开发人员快速构建服务端渲染的 React 应用程序。

    Next.JS 作为一个前端框架,它本身并不提供后端的功能,所以不能作为 fullstack 框架。如果您需要构建一个全栈应用程序,您需要配合后端框架(如 Express 、Koa 等)来实现。

    但是,Next.JS 可以作为前端框架与后端框架的结合体来使用。在这种情况下,Next.JS 可以帮助您快速构建服务端渲染的全栈应用程序,并且还提供了许多方便的功能,如预渲染、路由、代码分割等。这样,您就可以利用 Next.JS 的优点,快速构建高效、可靠的全栈应用程序。

    by chatgpt
    cktsun
        5
    cktsun  
       2022-12-04 17:08:14 +08:00 via Android
    如果你主力 web, nextjs 是一非常好的

    但是如果你需要桌面端程式和手端程式的整合, react 可能更好
    loading
        6
    loading  
       2022-12-04 17:09:09 +08:00
    @dayeye2006199 #3 我是推荐你 nest.js 写后端
    shakaraka
        7
    shakaraka  
    PRO
       2022-12-04 17:17:27 +08:00
    你需要的是 nest.js
    BugCry
        8
    BugCry  
       2022-12-04 17:46:15 +08:00 via Android
    挺好用的,搭配 knex.js ,小项目一把梭
    BugCry
        9
    BugCry  
       2022-12-04 17:47:41 +08:00 via Android
    来人,给 @ifdef 。。。换上敌军的衣服!
    jeesk
        10
    jeesk  
       2022-12-04 18:41:32 +08:00
    @cktsun 老哥是对岸敌占区的同志? 哈哈
    wateryessence
        11
    wateryessence  
       2022-12-04 18:49:20 +08:00
    nestjs
    zhouyg
        12
    zhouyg  
       2022-12-04 18:54:54 +08:00
    不能,nextjs 是重渲染的框架,偏前端,还缺少重数据逻辑的部分
    ucun
        13
    ucun  
       2022-12-04 19:06:40 +08:00
    可以,nextjs 也能处理后端逻辑。可以看文档,也可以看自带模板的 api 目录。
    KENNHI
        14
    KENNHI  
       2022-12-04 21:04:06 +08:00 via Android
    我建议是用你们团队熟悉的后端技术
    windfarer
        15
    windfarer  
       2022-12-04 21:31:58 +08:00   1
    34C
        16
    34C  
       2022-12-04 21:37:43 +08:00
    用 next.js 做过至少 10 个 fullstack 小网站了
    api route 做前后端分离的页面不要太爽
    加个 sequelize 就有数据库 orm 了
    hlwjia
        17
    hlwjia  
    PRO
       2022-12-04 21:43:52 +08:00
    对于小项目或者试水型的项目,用 Next.js 太方便了
    hlwjia
        18
    hlwjia  
    PRO
       2022-12-04 21:45:18 +08:00
    做一些面向海外的项目,直接 firebase ,啧啧啧,香
    chenzhe
        19
    chenzhe  
       2022-12-05 00:13:00 +08:00 via iPhone
    这两天刚开始写。
    Express+NextJS
    dayeye2006199
        20
    dayeye2006199  
    OP
       2022-12-05 00:50:21 +08:00 via Android
    @chenzhe 会把一些数据的接口定义放在公共的目录下前后共享吗?
    skenan
        21
    skenan  
       2022-12-05 02:24:19 +08:00 via iPhone
    https://create.t3.gg/ 试试这个 trpc typescript tailwindcss prisma
    amlee
        22
    amlee  
       2022-12-05 02:38:20 +08:00
    @dayeye2006199 你要是把业务逻辑放到 nextjs 里面写,那 nextjs 跟 php 没啥区别了。如果想统一技术栈,建议后端用 express,koa,或者 nestjs
    charlie21
        23
    charlie21  
       2022-12-05 06:41:01 +08:00 via Android
    nest.js
    renhou
        24
    renhou  
       2022-12-05 07:54:05 +08:00
    前端 SPA 框架:React
    前端 SSR ,SSG 框架:Next.js (最新版本已经放弃了 getServerSideProps API )
    后端框架:Nest.js Koa.js
    前后端全栈框架:Blitz.js
    以上均为基于 js 支持 ts 的框架

    如果你想前后端(相对)统一:Nest.js Koa.js
    如果你想开发全栈:Blitz.js
    如果你只考虑后端:Java Go Python...
    ryougifujino
        25
    ryougifujino  
       2022-12-05 09:49:39 +08:00
    可以,有人这么做。
    cheerxl
        26
    cheerxl  
       2022-12-05 10:34:00 +08:00
    nextjs + prisma
    cheerxl
        27
    cheerxl  
       2022-12-05 10:36:14 +08:00
    slert
        28
    slert  
       2022-12-05 11:22:58 +08:00
    只能说是同构 谈不上 fullstack
    nikolai
        29
    nikolai  
       2022-12-05 12:10:41 +08:00   1
    ragnaroks
        30
    ragnaroks  
       2022-12-05 12:24:33 +08:00
    可以,但是不建议,next 本身还是偏前端,没有 next 、express 那些偏后端或底层的功能。

    如果你的后端需求只是简单的逻辑计算和数据处理,比如天气预报、数据转图表、用户管理等,可以用。
    wanacry
        31
    wanacry  
       2022-12-05 13:53:48 +08:00
    在理论上,Next.JS 可以作为 fullstack 框架来使用。它提供了 server-side rendering 的功能,可以在 getServerSideProps 函数中处理数据库访问和调用 ORM 等操作。

    但是,这并不意味着 Next.JS 是一个专为 fullstack 开发而设计的框架。它主要还是针对前端开发的,并且有一些局限性,比如对于比较复杂的后端逻辑,可能不太适合使用 Next.JS 。

    因此,如果团队项目需要一个专为 fullstack 开发设计的框架,可能还需要考虑其他选项,比如 Express 、Koa 等框架。

    在使用 Next.JS 作为 fullstack 框架时,可能会导致代码难以管理,因为 Next.JS 没有提供特定的后端管理工具,所有的业务逻辑都需要在一个文件中编写和维护。

    因此,使用 Next.JS 作为 fullstack 框架需要谨慎考虑,并确保团队成员都有足够的经验和能力来管理和维护这样的代码。
    twinsant
        32
    twinsant  
       2022-12-08 09:35:29 +08:00
    @wanacry 看着好像 chatGPT 回答的。。。
    o562dsRcFqYl375i
        33
    o562dsRcFqYl375i  
       2023-08-18 12:10:43 +08:00
    @twinsant 味太冲
    lanvige
        34
    lanvige  
       2023-08-20 17:06:44 +08:00
    首先说答案:可以。
    Next.js 现在首推的就是服务端渲染,并提供了 API 机制。

    但社区现在也在思考,以 Next.js 为代表的框架是不是走偏了:
    https://marmelab.com/blog/2023/06/05/react-angularjs-moment.html
    https://news.ycombinator.com/item?id=36210765
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4026 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:16 PVG 18:16 LAX 03:16 JFK 06:16
    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