我想用 nextjs 写后端给 app 提供接口,会有什么坑吗?
有一个业务比较杂,但普遍是增删改查的 app ,无网页端。
争取到了比较多的开发时间,实在写够 springboot 那一套了,想尝试一下新的。
请问各位可以用 nextjs 写接口给 app 提供服务吗,就是在 nextjs 连接数据库进行增删改查?会遇到什么坑吗
nextjs 最大特色是 ssr ,既然你不打算提供网页内容,为什么一定要用 next.js ? 一定想上的话,可以是可以,但我想 nextjs 对你要实现的功能来说,那样会有些重 我目前的开源项目 github.com/work7z/LafTools ,有一些后悔上了 Next.js ,主要原因如下: - 要自行部署,得配 standalone 那套,感觉这 standalone 不是官方最倾向的,人家想你直接上 vercel - 时不时会遇到 abortInComing 错误,从 12.x 到 14.x 都看到有这个错误抛出(官方为此 release 了几次但还是有),这对于稳定性来说实在不太能接受(再怎么样也不能整个应用都 crash 了吧) - 想给你的 header 或者所有 http 请求加点逻辑?拦截器或者中间件啥的?可以,写 middleware ,但那玩意是 experienmental feature ,每次用都心惊胆战的 我再来一次的话,会考虑别的 ssr 框架了。对于你的需求,我建议 express 加 typescript 就 OK 了,可以参考我这个项目的 modules/server2 ,开箱即用
关于第二点 abortIncoming ,看了下 issue ,应该也是由 middleware 导致的
直接 koa 或 express 不就好了
没页面需求,还是用 springboot 吧,找个代码生成器。或者使用 go ,优势内存小,部署简单。
纯写接口为什么不试试 nestjs
#1 你这个用 Next.js 真的是高射炮打蚊子了。好处没用上,复杂度还上去了
可以看看 Elysia.js 或者 Nest.js 😄
对我来说好处就是 ssr+server action ,这些还是 OK 的,坏处就是定制型差,而且场景不太匹配就是说...
Node : hono or elysiaPython : fastpaiJava: quarkus
#8 他主要是解决 C 端 SEO 、服务端渲染的问题。你这个工具感觉大部分都得 use client 。个人觉得用 svelte kit 那一套可能更合适 。不一定对啊哈哈哈哈
可以的老哥,感谢建议哈哈哈我是为了 seo 考虑和页面直出,所以用了 Next.js ,不过也确实到处都是 use client ,我到时候看看架构要不要调整下
hono 或者 koa 就行了
推荐用 hono
nextjs 是个全栈框架,而且时偏前端的,你的需求完全没有网页端,那就根本不合适。
Nitro 了解一下
nest/koa
我用它做 web 全栈,app ,小程序用的就是 next 接口 api ,对我来说非常好用。
你没有弄懂 Nextjs ,完全可以做到一键部署的。另外 middleware 也并不是试用特性。
一键部署指的是 vercel 那一套吗?确实是有,但我需要更高层次的定制,nextjs 满足不了(或者说场景不合适)middleware 的 edge engine 确实是实验性质
我用 Next.js 有一段时间,不算是大师哈,但踩的坑也不少,相对也懂一些,我在本贴提到的都是 [standalone] 模式的,关于其他默认模式的不在我探讨范围内。之前写 middleware 的时候,引入了一些 npm 的库,按理来说是在 Node.js 上跑的应该都能编译,但 Next.js 就是不允许 middleware 上引用一些第三方的库,要不然就报错给你看。经过一些 issues 和官方人员的探讨和相关 workaround ,我才知道如果是 standalone 模式下要用 middleware ,你得配置如:export const config = { matcher: "/((?!api|static|.\..|_next).)", runtime: "experimental-edge", // for Edge API Routes only unstable_allowDynamic: [ "/node_modules/lodash/*", "./node_modules/.pnpm/[email protected]/node_modules/lodash/lodash.js", ],};而这个又正好是实验性特性(正如你每次跑 dev 都会提示你的一样: ⚠ You are using an experimental edge runtime, the API might change.) 反正我就一个写代码的,懒得翻源码看,就这么先写着先,对于楼主和我的场景来说,Next.js 都不合适 :P
我觉得可以好处:- 没有页面需求,打开思路,可以放一个页面当 console 玩。没必要用 standalone 。- 可以尝试用 vercel ,免费而且有 log ,很丝滑- 生态比较好。什么东西都找得到。比如新东西如 gpt 相关的一大堆。更别提常见的 auth / logging 之类的需求了- 不要从头写。找个脚手架开始就行。next 脚手架太多了。整体我自己感觉是搭起来比 springboot 要快的。springboot 那一套怎么着我也得半天。next 的大概 1 个小时就差不多了。用点 npx 什么的基本都是命令行一步一步跟着来。java 的脚本做的确实普遍不如 node 好。- 关于数据库,脚手架里面如果带个 prisma ORM ,我感觉比 JPA 香。更别提 mybatis 了,装了插件我也写的太累了。或者干脆是一个 supabase ,都能图形化操作了。要注意的,不好的:- cjs & mjs ,type: module 这个是我自己最烦的。虽然升降一下包版本可以解决。但是就是很烦。- 如果要跑 typescript 脚本,ts-node & tsx 也很烦。能解决但是很烦。- 其他小坑。比如 vercel 上 ORM 要 import 一下要不然没法 init 之类的。问题不大都能搜到。- node 不太好的地方在于,一个线程,逻辑复杂了不好 debug ,而且监控上我感觉还是没有 java 成熟,还是得依赖 PaaS 。node 理论上还是做转接层合适,但俺寻思咱们写的 CRUD 不都是转接吗?瓶颈大部分在持久层。- 另外如果是 vercel 。要注意的是 vercel edge & serverless 会有时间限制。好像是 10s 来着。原因是 edge & serverless 不推荐做计算和存储逻辑。但看 OP 的需求刚好就是 CRUD ,我觉得还挺合适的。而且这个 edge 我个人感觉还挺有趣的。虽然我没有实际 bench 过,但按道理来说是比中心化的服务器更快的。
不要用 app router ,明显复杂很多,社区的抱怨不是一天两天了 www.reddit.com/r/nextjs/comments/1c7oi1m/why_do_people_dislike_the_app_router/
nextjs 所谓的全栈, 是对于前端开发者来说的. 它的后端功能极其薄弱, 主要用来做 BFF. 用 nextjs 做后端,那是找罪受.
fastpai+1
express 吧
你是不是发错了 nestjs
没有什么大坑,可以用,我现在就这么写的,但是我的项目是一个前端+“中后端”,就是背后还有一个公司的主 API 连着服务器。很复杂的正经大型 API 用 Next 写没什么必要,Next 就不是设计来作为后端用的。如果不想换语言,JS/TS 也有很多的后端 focus 的框架。如果是全栈稍微带点后端那 Next 还是可以胜任的。
nestjs 吧
supabase firebase 试试 直接在 app 里直连 db 查数据 配置好安全规则 crud 不需要要过后端
非常非常感谢各位,根据各位的回复越搜越迷糊,感觉前端的技术栈现在太强大了。如果移动端采用 react native ,后端有推荐吗?因为这个项目只是目前不考虑网页端,但是客户这里无法确定不会有网页端的想法
前端 RN 后端无所谓吧,但 next.js 是不太合适...想用 js 写就 express 或者 koa 吧,想写变种 java 就 nest.js 。个人感觉 koa 写着更舒服,轻量,但 express 社区更活跃,插件/教程/问题好解决一些。
在中台写了一个添加广告的表单,前端代码类似于 ... 测试通过上生产,收到客户反馈找不到这个功能,鸡同鸭讲折腾了好久才发现是 AdBlock 扩展的锅。 我是没想到 AdBl…
先发下我目前装的transmission 保种qbittorrent 下载moviepolit 媒体库管理iyuuplus-dev 辅种lucky 代理转发,唤醒 wincoo…
这个免费的GPL许可证的C++库据说可以跨Linux, MacOS, Windows和iPhone,太过份,居然还连iPhone也跨了。 大家可以到下面这个网址上下载下来试试看…