react koa rematch 如何打造一套服务端渲染架子
前言
本次讲述的内容主要是react与koa搭建的一套ssr框架,是在别人造的轮子上再添加了一些自己的想法和完善一下自己的功能。
本次用到的技术为: react| rematch| react-router| koa
react服务端渲染优势
SPA(singlepageapplication)单页应用虽然在交互体验上比传统多页更友好,但它也有一个天生的缺陷,就是对搜索引擎不友好,不利于爬虫爬取数据(虽然听说chrome能够异步抓取spa页面数据了);
SSR与传统SPA(Single-PageApplication-单页应用程序)相比,服务器端渲染(SSR)的优势主要在于:更好的SEO和首屏加载效果。
在SPA初始化的时候内容是一个空的div,必须等待js下载完才开始渲染页面,但SSR就可以做到直接渲染html结构,极大地优化了首屏加载时间,但上帝是公平的,这种做法也增加了我们极大的开发成本,所以大家必须综合首屏时间对应用程序的重要程度来进行开发,或许还好更好地代替品(骨架屏)。
react服务端渲染流程
组件渲染
首先肯定是根组件的render,而这一部分和SPA有一些小不同。
使用ReactDOM.render()来混合服务端渲染的容器已经被弃用,并且会在React17中删除。使用hydrate()来代替。
hydrate与render相同,但用于混合容器,该容器的HTML内容是由ReactDOMServer渲染的。React将尝试将事件监听器附加到现有的标记。
hydrate描述的是ReactDOM复用ReactDOMServer服务端渲染的内容时尽可能保留结构,并补充事件绑定等Client特有内容的过程。
importReactfrom'react'; importReactDOMfrom'react-dom'; ReactDOM.hydrate(,document.getElementById('app'));
在服务端中,我们可以通过renderToString来获取渲染的内容来替换html模版中的东西。
constjsx=consthtml=ReactDOMServer.renderToString(jsx); letret=` ${html}