说几点个人使用 nextjs 的感受

285 天前
 MorningStar0

网页: https://freezer-home.ashesborn.cloud/ 仓库: https://github.com/sadofriod/freezer-home

部署角度

目前体验基本满分。结合 vercel 基本不用任何配置,就能快速部署。并且使用 cloudflare 的域名后,也可以实现让国内访问。

开发体验角度

无法在 server component 里直接使用 hooks ,ref 和 react 的事件收集( onChange 这类)的功能,所以有些动画需要原生实现,失去了 react 的很多便利性。

SEO 角度

由于可以将大部分内容直接通过静态页面返回,所以确实带来了巨大的提升。但是官方文档对于 robots ,sitemap ,meta 标签的 keywords 之类的常见功能没有提供一个比较好的解决方案(目前还是采用字符串模版拼接的方式,或者是我没仔细看),理想的情况下希望能提供几个函数来收集每个路由下的信息来解决这个问题。

监控工具的集成角度

目前我集成了 google analytics 、tag manager 、google 站长工具。官方提供了一个集成的 component 配置比较简单。

server 负载角度

对于大部分网页访问量不高的情况不会有问题,但虽然提供了 server component 的渲染缓存,但对于接入数据的变动 server component 来说,还是存在部分 CPU 密集型的计算在 nodejs 的 server 中,在访问量比较大的时候,还是需要考虑。

总结

总的来说,对于我个人来讲,如果没有强烈的 SEO 需求,对于一般项目的话不会采用 nextjs 。server component 和 client component 的分离,迫使我在状态管理上要做更多思考和操作。而且对于首屏的渲染在现在协商缓存的基础下,也只有用户收到新版本的网页的时候会有差距,其他大部分情况下差距不大。

7967 次点击
所在节点    程序员
54 条回复
zbowen66
284 天前
热更新巨慢,像回到 webpack 刚问世的时候。

server component 我主观上觉得巨难受,无数次从 server side props 改成 client side state ,还有玄学的缓存问题。到最后全部都是 use client 。

next-auth 也非常黑盒,登录成功的响应竟然是 302 ,死活无法适配另一个 web app 。

对我来说唯一好的体验就是 server actions ,免掉了各种类型定义,不知道其他框架有没有。
zbowen66
284 天前
@zbowen66 #41 next-auth 那个我试过配置取消重定向,结果就是带来其他 bug ,拆东墙补西墙。
MorningStar0
284 天前
@zbowen66 我看过一些评论慢的情况是全量引入了一整个 icons 库,从这点来看可能 turbopackage 对于这种情况没有做好处理
PPPaul
284 天前
不在 vercel 部署而自行部署你会很难受,他的 nodejs 运行时不是标准运行时,你往中间件里加 feature 难受的一批。和自己的云平台绑的太深了,谨慎考虑吧
Plumbiu
284 天前
@XCFOX 服务端渲染,直接用 fetch 就行了,为什么要用 useEffect ,不太理解,而且 next.js 最开始也是 loader 思想的,参考 page router 里的 getServerSideProps
baiwfg2
284 天前
各位前端大佬,本菜鸟刚学了 nextjs 官方的 dashboard 例子,还看不懂你们讨论的是啥细节。还要补充哪些知识点呢
FlashEcho
284 天前
@lavard #3 shadcn/ui 写一些简单应用还行,但是组件毕竟不如 mui ,antd 丰富,感觉还是不太好用。看上去给了本地的源代码可以编辑,但是真的缺什么功能的话,如果依赖的底层组件没有直接给相关接口,自己写很麻烦
wowbaby
284 天前
ssr 用起来就是蛋疼,我宁愿用其它语言 mvc 模式实现多好,有研究 ssr 的时间,我代码都写完了,问题又多,关键性能还差,反正是不想再用了。
xavierchow
283 天前
@zbowen66
> next-auth 也非常黑盒,登录成功的响应竟然是 302 ,死活无法适配另一个 web app 。

next-auth 黑盒说不上,就是文档太差了,我遇到问题都是直接翻源码,它因为要适配各种情况,配置的确比较杂,像重定向之类 redirectTo 如果没有传,它会返回一个 response 就不给你做重定向了。
frank42a
281 天前
用这个吧 [Eleventy]( https://www.11ty.dev/) 回归质朴
azhong123
260 天前
@monkeyWie 这种情况下用 nextjs 的目的是啥? 我是写后端的,我的想法和你差不多,然后我主要是感觉用 nextjs 的约定俗成的配置,比如 app 路由,省去我学习其他路由库的时间,不知道你是什么想法
monkeyWie
260 天前
@azhong123 想法跟你差不多,还要个最主要的点是除了 create-t3 之外,没有一个好用的全栈 ts 前后端分离开发脚手架,然而 create-t3 只支持 nextjs ,后来我捣鼓了下变成了开发环境下是 SSR ,只用启动一个服务就能调试前后端,生产环境打包分别部署前后端,体验非常好
azhong123
258 天前
@monkeyWie #52 孤陋寡闻了,我都没听过 create-t3
gongxi036
227 天前
我想问 nextjs ,中关于水合的问题,是框架的问题,还是开发者的问题呢?
在开发中总是出现 server component 和 client component 纠结的问题,是因为刚接触 nextjs 才会有这个问题吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1099027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX