返回介绍

编码指南

发布于 2019-12-26 23:51:15 字数 1002 浏览 1051 评论 0 收藏 0

相比开发普通的 Web 应用,在开发 SSR 应用时,端上环境和渲染机制的差异,会对编码带来一些约束:

状态管理

Server 端的渲染过程是一个同步的操作,其本质是将 JSX 组件渲染为 HTML 字符串。

setStatehooks 这类对组件异步更新状态的方法,以及组件的 生命周期 方法,在 Server 端不会被执行。

开发过程中,应尽量避免将用于渲染初始页面的状态,通过异步的方式来更新。

useState 为例, 初始状态值 0 , 在 Server 端渲染时,会被正常获取,而异步方法 setCount 则不会被执行。

1function Counter() {
2  let [count, setCount] = useState(0);
3  
4  if (count < 3) {
5    setCount(count + 1);
6  }
7  
8  return <span>Count: {count}</span>;
9}

环境判断

在 Node 环境下, windowlocation 等浏览器环境提供的全局变量是无法正常使用的。如果希望在不同端下,差异性地执行部分逻辑,可以通过为这类代码增加环境的判断方式来实现。

`universal-env` 提供了判断和获取运行时环境的能力。

1npm install universal-env --save

使用示例:

 1import { isWeb, isNode } from 'universal-env';
 2
 3function Page() {
 4
 5    if (isWeb) {
 6    // do something
 7  }
 8  
 9  return <div>hello rax</div>
10}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文