Skip to content

00介绍

参考 https://ssr.vuejs.org/zh/

Vue.js 服务端渲染指南

注意: 本指南需要最低为如下版本的 Vue,以及以下 library 支持:

  • vue & vue-server-renderer 2.3.0+
  • vue-router 2.5.0+
  • vue-loader 12.0.0+ & vue-style-loader 3.0.0+

如果先前已经使用过 Vue 2.2 的服务器端渲染(SSR),你应该注意到,推荐的代码结构现在略有不同(使用新的 runInNewContext 选项,并设置为 false)。现有的应用程序可以继续运行,但建议你迁移到新的推荐规范。

什么是服务端渲染 SSR ?

Vue.js是构建客户端应用构架的框架。默认情况下,可以在浏览器中输出Vue组件,进行生成DOM和操作DOM。然而,也可以将同一组件渲染为服务端的HTML字符串,将它们直接发送到浏览器,最后将静态标记“混合”为客户端上完全交互的应用程序。

服务端渲染的Vue.js应用程序也可以被认为是“同构”或“通用”,因为应用程序的大部分代码都可以在服务器和客户端上运行。

为什么使用服务端渲染 SSR ?

与传统的SPA(Single-Page-Application 单页应用程序)相比,服务端渲染的优势在于:

  • 更好的SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面

请注意,截至目前,Google 和 Bing 可以很好对同步 JavaScript 应用程序进行索引。在这里,同步是关键。如果你的应用程序初始展示 loading 菊花图,然后通过 Ajax 获取内容,抓取工具并不会等待异步完成后再行抓取页面内容。也就是说,如果 SEO 对你的站点至关重要,而你的页面又是异步获取内容,则你可能需要服务器端渲染(SSR)解决此问题。

  • 更快的内容到达时间(time-to-content),特别是对于缓慢的网络情况或运行缓慢的设备。无需等待所有的JavaScript都完成下载并执行,才显示服务器渲染的标记,所以你的用户将会更快地看到完整渲染的页面。通常可以产生更好的用户体验,并且对于那么[内容到达时间 time-to-content 与转化率直接相关]的应用程序而言,服务端渲染至关重要。

使用服务端渲染时还需有一些权衡之处:

  • 开发条件所限。浏览器特定的代码,只能在某些生命周期钩子函数 lifecycle hook中使用;一些外部扩展库 external library 可能需要特殊处理,才能在服务器渲染应用程序中运行。

  • 设计构建设置和部署的更多要求。与可以部署在任何静态问津啊服务器上的完全静态单页面应用程序SPA不同,服务器渲染引用程序,需要处于Node.js Server运行环境。

  • 更多的服务器端负载。在Node.js中渲染完整的应用程序,显然会比仅仅提供静态文件的server更加大量占用CPU资源(CPU-intensive- CPU密集),因此如果你预料在高流量环境(high traffic)下使用,请准备相关的服务器负载,并明智地采用缓存策略。

在对你的应用程序使用服务器端渲染之前,你应该问第一个问题,是否真的需要它? 这主要取决于内容到达时间(time-to-content)对应用程序的重要程序。例如,如果你正在构建一个内部仪表盘,初始加载时的额外几百毫秒并不重要,这种情况下去使用服务器端渲染将是一个小题大做之举。然而,内容到达时间要求绝对关键的指标下,在这种情况下,服务端渲染可以帮助你实现最佳的初始加载性能。

服务器端渲染 VS 预渲染 (SSR vs Prerendering)

如果你调研服务器端渲染只是用来改善少数营销页面(例如 /, /about, /contact等)的SEO,那么你可能需要预渲染,无需使用web服务器实时动态编译HTML,而是使用预渲染方式,在构建时(build time)简单地生成针对特定路由的静态HTML文件。 优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点。

如果使用webpack,可以使用prerender-spa-plugin轻松地添加预渲染。它可以被Vue应用程序广泛测试

共 20 个模块,1301 篇 Markdown 文档。