Webpack学习系列(六)服务端渲染

377 阅读1分钟

客户端请求:


服务端渲染:






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标签 里面保存了很多数据