Skip to content
On this page

webpack 实现 SSR 打包

服务端渲染(SSR)是什么

  • 渲染:HTML + CSS + JS + DATA => 渲染后的 HTML

服务端

  • 所有模板等资源都存储在服务端
  • 内网机器拉取数据更快(优势)
  • 一个 HTML 返回所有数据
客户端渲染服务端渲染
请求多个请求(HTML,数据等)1个请求
加载过程HTML & 数据串行加载1个请求返回 HTML & 数据
渲染前端渲染服务端渲染
可交互图片等静态资源加载完成,JS 逻辑执行完成可交互两端一样

优势

  • 减少白屏时间
  • 对于 SEO 友好

打包存在的问题

  • 浏览器的全局变量(Node.js 中没有 window,document)
    • 组件适配:将不兼容的组件根据打包环境进行适配
    • 请求适配:推荐使用 axios
  • 样式问题(Node.js 无法解析 css)
    • 服务端打包通过 ignore-loader 忽略掉 css 的解析
    • style-loader 替换成 isomorphic-style-loader
    • 使用打包出来的浏览器端 html 为模板
    • 设置占位符,动态插入组件