13 webpack SSR打包
服务端渲染(SSR):核心思想是减少请求
渲染:HTML+CSS+JS+DATA->渲染后的HTML
优势:服务端内网机器拉取数据更快,一个HTML返回所有数据,减少白屏时间,对seo友好
实现思路:
- 服务端:使用 react-dom/server的 renderToString方法将React组件渲染成字符串
- 客户端:打包出针对服务端的组件
实现dome:https://github.com/CJFcheng/SSR_dome
webpack SSR打包过程中的问题:
- 浏览器的全局变量,node中没有document和window
- 将不兼容的组件根据打包环境进行设配
- 将fetch或ajax发送请求的写法改成isomorphic-fetch或者axios
- node无法解析css:
- 服务端打包通过ignore-loader忽略掉css解析
- 将style-loader替换成isomorphic-style-loader
解决样式不显示问题:设置html文件为模板,并带入link,通过设置占位符,一般为html的注释。再通过fs模块读入该文件为字符串,再把组件替换占位符。再渲染到页面
浪波激泥