同构
HTML空内容,较长的等待时间,加载的HTML中不显示内容,导致无法进行SEO优化。
利用React在客户端和服务端渲染数据同步是难点。
在服务端渲染出HTML内容返回给用户了,浏览器端展示了这部分内容之后,同样也要加载react和代码,需要绑定事件,处理响应。还需要重新渲染,这会用到在服务端渲染时用到的数据,而这部分数据在99%的情况下是一样。需要在生命周期中通过Ajax请求一遍服务端。一次http请求,会耗费资源以及等待时间。这部分数据又在服务端请求时被用过,是否复用,是开发同构应用非常重要的考虑。
nextjs提供的getInitialProps方法,帮我们建立了这一套逻辑。在服务端渲染时会使用这个方法,并得到一个return的返回,作为页面的return被接收到。这部分数据会被nextjs处理收集,在服务端返回html的时候,会插入到html的script标签当中,以HTML的一部分返回此标签,作为react在客户端第一次渲染时的数据,而不需要再去调用getInitialProps重新请求数据。
在项目中我们利用getInitialProps获取缓存,同步redux数据。
OAuth
在实际应用中,构建自己的用户体系是复杂而高要求的。而接入第三方可以避免。
Cookie & Session
通过cookie确定用户,通过session存储信息。
Hooks
React 生态周边
Redux
在服务端和客户端都要生成Redux store,这两个store之间同步。