搭建React应用的时候,服务器组件是新出现的很热门的功能,它可以切实提高渲染速度,它还能够解决一些传统组件存在的问题,接下来会带大家深入了解它。
什么是 React 服务器组件
React服务器组件是React 18新增加的功能,它也是Next.js 13的默认功能,它主要在服务器获取数据,然后进行渲染,接着以类似JSON的自定义格式传输到客户端应用,例如在一些大型电商项目里,商品数据从服务器获取,先通过服务器组件完成渲染,再传至客户端,这样能让数据显示得更快 。这一特点和传统客户端渲染组件不一样,它能够有效地解决客户端与服务器之间通信延迟的状况。
const ProductPage = ({ productId })=> { return ( > ) }</pre>const ProductPage = ({ productId })=> { const data = fetchContentsFromAPI(); return ( > ) }</pre>引入服务器组件的原因
const ProductDetails = ({productId, children}) => { const details = fetchProductDetails(productId); return ( {{ children }} > ) } const ProductItem = ({productId}) => { const item = fetchProductItem(productId); return (...) } const MatchedItems = ({productId}) => { const items = fetchMatchedItems(productId); return (...) } const ProductPage = ({ productId })=> { return ( > ) }</pre>
过去,在进行API调用时,无论采用何种方式,都得从客户端向服务器发起请求,这致使客户端和服务器之间延迟颇为明显,对于一些对实时性要求较高的社交应用而言,这种延迟会对用户体验造成严重影响,React团队正是鉴于这一点,才引入了服务器组件。它在服务器上运行,能够快速进行API调用,还能快速进行渲染,极大地提升了应用性能,避免了不必要的等待时间。
服务器组件与客户端组件区别
最大的区别在于呈现的位置,服务器组件在服务器进行呈现,客户端组件在客户端呈现,客户端组件发送到客户端后,会让应用捆绑的大小增加,这就是常见的传统React组件。以一个小型新闻应用作为例子,当客户端组件加载大量新闻列表时,速度或许会比较慢,而服务器组件会预先处理数据并开展渲染工作,这样的话,客户端就能更快地看到内容,并且还能够减轻负担。
服务器组件与服务器端呈现关系
在React里,服务器端呈现(SSR)会把服务器上的React组件转变成静态HTML页面,然后直接呈现给客户端。React服务器组件借助类似JSON的协议和SSR合作,在不向客户端交付捆绑包的情形下达成渲染。某些博客网站使用了SSR,它能快速向用户展示网站内容,其服务器组件相互结合,使得网站性能得到提高,并且还避免了给客户端带来额外负担。
在传统 React 应用使用服务器组件
在典型的React应用当中,服务器组件和普通React组件相类似。不过需要注意,“use client”指令划分出了服务器组件与客户端组件的界限。而且,服务器组件无法导入客户端组件,客户端组件则能够导入服务器组件。在一个在线论坛项目里,将客户端的评论编辑器组件引入服务器组件,如此便能够灵活运用不同的功能组件,进而为用户带来更佳的体验。
在 Next 应用程序使用服务器组件
// Server Component import db from 'db'; import NoteEditor from 'NoteEditor'; async function BlogPost({id, isEditing}) { const post = await db.posts.get(id); return (); }{post.title}
{post.body} {isEditing ? : null }在 Next 13 新引入的 App 目录里,服务器组件属于普通 React 组件,它默认支持服务器组件,这使得开发者使用起来更为便利。在开发多页面电商应用时,运用 Next 应用中的服务器组件,不仅能够加快页面渲染速度,还可以让代码结构更加清晰。
使用React服务器组件时,你遇到过特别的问题吗?欢迎评论并分享,别忘了为本文点赞和转发!
const ServerComponent1 = () => { return ( ) }