Vue 服务器端渲染(一)

什么是服务器端渲染(SSR)?

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

服务器渲染的 Vue.js 应用程序也能够被认为是"同构"或"通用",由于应用程序的大部分代码均可以在服务器和客户端上运行。webpack

为何使用服务器端渲染(SSR)?

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

  • 更好的 SEO,因为搜索引擎爬虫抓取工具能够直接查看彻底渲染的页面。

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

  • 更快的内容到达时间(time-to-content),特别是对于缓慢的网络状况或运行缓慢的设备。无需等待全部的 JavaScript 都完成下载并执行,才显示服务器渲染的标记,因此你的用户将会更快速地看到完整渲染的页面。一般能够产生更好的用户体验,而且对于那些「内容到达时间(time-to-content)与转化率直接相关」的应用程序而言,服务器端渲染(SSR)相当重要。

使用服务器端渲染(SSR)时还须要有一些权衡之处:缓存

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

  • 涉及构建设置和部署的更多要求。与能够部署在任何静态文件服务器上的彻底静态单页面应用程序(SPA)不一样,服务器渲染应用程序,须要处于 Node.js server 运行环境。网络

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

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

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

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

若是你使用 webpack,你可使用 prerender-spa-plugin 轻松地添加预渲染。它已经被 Vue 应用程序普遍测试 - 事实上,做者是 Vue 核心团队的成员。

相关文章
相关标签/搜索