Next.js 真的是越来越难用了,什么狗屁 use client,不如 Astro 一根,有什么话跟我的岛屿说去吧

10 天前
 u3u

5609 次点击
所在节点    Next.js
49 条回复
rocmax
9 天前
astro 的处理方式像 nuxt ,hydrate-on-*指令
Kiske
9 天前
@Danswerme Vercel 挖走了很多 React 核心开发, 劫持绑架了整个 React 生态圈
yb2313
9 天前
astro 听起来总感觉像某个偶像团体的名字, 很涩
alleluya
9 天前
@importmeta #4 还是那个问题 ssr 的收益有那么大么
JustBecause
9 天前
use client 确实挺 nt 的,我的办法就是管他什么渲染都加上 use client ,出问题再拿掉
v23xowen
9 天前
确实 Astro 用着很舒服
DefoliationM
9 天前
@andrew2558 nextjs 也可以编译为静态文件,不用 ssr 。
jguo
9 天前
nextjs 能在构建时检测到用户没加 use client 就能自动当 client component 处理,这在技术上没难度。但是一个项目 server 和 client 的边界本来就应该是明确的,写代码的时候如果脑子里分不清楚这个边界可能会出现严重的问题。
EJW
9 天前
我一开始只是想起个 reac ,然后 react 推荐我直接用 next ,结果很多页面我就照着原本写法,全用 use client 了
DICK23
9 天前
不是都一样啊? use client 只有你需要使用到 client 端的特性或 API 的时候才需要加,使用到 server action 才需要标记 use server 。
heishu
9 天前
现在想写个 csr 、spa 项目,都是用的 react+vite 或者直接 vue 开嗦; react 捆绑 nextjs 真的是太烦了
rocmax
9 天前
@alleluya 在 next Pages router 和 nuxt2 的时代,ssr 意义只在于 SEO 和首屏渲染速度,SEO 不是刚需的话 ssr 不重要,大不了多等几百 ms 。
但是现在 rsc 解决的核心问题是通过 hydration 粒度控制来减少客户端需要下载的 js ,所以即便不注重 SEO 也可以利用 rsc 来提升客户端性能。
当然带来的复杂性就是毕竟服务端和客户端渲染环境不同,顺序不同,所以还需要桥梁来连接这两者,就是 use server 和 use client 。dan 最近发了一篇博客写的很好 https://overreacted.io/what-does-use-client-do/

'use client' is a typed <script>.
'use server' is a typed fetch().

当然 ssr 是不是正确的发展路线我不知道,兴许过几年又回归 client first 。但在 ssr 这条路上我认为 nextjs 是走在前列的,astro 和 nuxt 采用的手动标记 hydration 边界的做法不如 nextjs 的 use client 自然。
alleluya
9 天前
@rocmax #32 ssr 和 rsc 是两个概念啊 我主要一直对 ssr 的收益感觉没那么大 而且现在 SEO 也没那么重要了吧 或者说很多时候有替代方案 这个时候你再上 ssr 的意义是什么呢
xxgw
9 天前
SPA: 通过请求一个带有空的 id 的 html 文件,以及一个很大的 js 文件,后续由 js 在浏览器中进行渲染整体的页面。

SSR: 服务端进行加载数据,初次渲染整体的 HTML 页面,后续 JS 水和整个页面使页面具有交互性,并且后续页面导航跳转是通过加载 JSON payload 作为 props 注入到 React 代码中。

RSC: 在服务端渲染 HTML 页面,后续 JS 水和整个页面使页面具有交互性,后续页面导航是 fetch 请求服务端 HTML 页面。

Nextjs 是 SSR 与 RSC ,新版本更多的还是 RSC

Remix 和 Tanstack start 这类目前还只是 SSR
rocmax
9 天前
@alleluya 你非要抠字眼限定 ssr 就是 pages router 或者 nuxt2 那种模式的话确实没意义。渲染模式就那几种 csr ssr ssg 最多加上 nuxt 提出的 isr ,你认为 rsc 属于哪种?
miku999
9 天前
@himself65 #19 🧀🍞
rocmax
9 天前
@xxgw rsc 不会水合整个页面,只需要水合 client component 部分
arvinxx
9 天前
> Astro 自动将每个 UI 组件渲染成仅包含 HTML 和 CSS 的形式

这个和 RSC 没区别呀? RSC 组件默认渲染出来的也是 HTML 和 CSS ,也是不包含任何客户端 JS 的。

> <MyReactComponent client:load />

这个写法和下面这种写法有何区别?一个是外层使用,一个是顶部文件加,有啥区别?

```tsx
'use client';

const MyReactComponent =()=>{ ... }

export default MyReactComponent;
```

不过加载优先级这个的确是更细粒度的一个控制能力,感觉 react 可以把这个也加到 RSC 规范里,能给到开发者更多控制权。
rocmax
9 天前
@arvinxx 不,react 从 18 开始支持并发模式,可以处理任务的优先级,hydration 并不会阻塞主线程,相当于更加高级的 hydrate-on-idle 。使用 hydrate-on-visible 和 hydrate-on-interaction 实际上是开发者在预测用户的行为,可能导致负优化。
momowei
9 天前
next 就是垃圾,吹这个的都是一些所谓个人开发者。
但凡真的用户体验考虑,都不可能用 next 来实现 ssr

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

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

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

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

© 2021 V2EX