客户端请求:

服务端渲染:



SSR优势:
1.减少白屏事件
2.对SEO友好,vue这类框架是动态生成页面内容,一开始html文件是空的/很少内容,不利于爬虫进行分析
SSR实现思路
使用renderToString是因为服务端没有window,document等客户端对象,
练习
1. 添加webpack.ssr.js文件,先复制webpack.prod.js内容
2.pakage.json的script对象中添加 "build:ssr":"webpack --config webpack.ssr.js"
3.根目录新增渲染相关开发文件夹 例如 server文件夹
4.express为例 npm i express -D
5.修改webpack.ssr.js内容
注:注释掉optimization对象内容,否则看不到任何东西

6.编写srever/index.js的相关代码,
注意组件的导出使用module.exports,不能用reactdom.render
注意不要使用improt语法 使用require
7.npm run build:ssr

8. node server/index.js 报错,这里要做个hack
if(typeof window ==='undefined'){
global.window = {}
}

其他:

练习
1.客户端search.html 添加占位符<!--HTML_PLACEHOLDER-->
2.npm run build:ssr 注:removeComments: false 一定要是false否则,注释会被删除
3. 修改 server/index.js文件 :
const template = fs.readFileSync(path.join(__dirname,'../dist/search.html'),'utf-8')const renderMarkup = (str) => return template.replace('<!--HTML_PLACEHOLDER-->',str)4. node server/index
类似的添加数据占位符也可以往首屏内添加数据
最终结果如下:
左边的红色箭头是塞入的html,右边是的塞入的script标签 里面保存了很多数据