3
3
> ** 注意:** 本指南需要最低为如下版本的 Vue,以及以下 library 支持:
4
4
> - vue & vue-server-renderer 2.3.0+
5
5
> - vue-router 2.5.0+
6
- > - vue-loader 12.0.0+ & vue-style-loader 3.0.0+
6
+ > - vue-loader 12.0.0+ & vue-style-loader 3.0.0+
7
7
8
8
> 如果先前已经使用过 Vue 2.2 的服务器端渲染(SSR),你应该注意到,推荐的代码结构现在[ 略有不同] ( ./structure.md ) (使用新的 [ runInNewContext] ( ./api.md#runinnewcontext ) 选项,并设置为 ` false ` )。现有的应用程序可以继续运行,但建议你迁移到新的推荐规范。
9
9
10
10
## 什么是服务器端渲染(SSR)?
11
11
12
12
Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。
13
13
14
- 服务器渲染的 Vue.js 应用程序也可以被认为是"同构"或"通用",因为应用程序的大部分代码都可以在服务器 ** 和** 客户端上运行 。
14
+ 服务器渲染的 Vue.js 应用程序也可以被认为是"同构"或"通用",因为应用程序的大部分代码都可以在 ** 服务器 ** 和** 客户端 ** 上运行 。
15
15
16
16
## 为什么使用服务器端渲染(SSR)?
17
17
18
18
与传统 SPA(Single-Page Application - 单页应用程序)相比,服务器端渲染(SSR)的优势主要在于:
19
19
20
20
- 更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。
21
21
22
- 请注意,截至目前,Google 和 Bing 可以很好对同步 JavaScript 应用程序进行索引。在这里,同步是关键。如果你的应用程序初始展示 loading 菊花图,然后通过 Ajax 获取内容,抓取工具并不会等待异步完成后再行抓取页面内容。也就是说,如果 SEO 对你的站点至关重要,而你的页面又是异步获取内容,则你可能需要服务器端渲染(SSR)解决此问题。
22
+ 请注意,截至目前,Google 和 Bing 可以很好对同步 JavaScript 应用程序进行索引。在这里,同步是关键。如果你的应用程序初始展示 loading 菊花图,然后通过 Ajax 获取内容,抓取工具并不会等待异步完成后再行抓取页面内容。也就是说,如果 SEO 对你的站点至关重要,而你的页面又是异步获取内容,则你可能需要服务器端渲染(SSR)解决此问题。
23
23
24
24
- 更快的内容到达时间(time-to-content),特别是对于缓慢的网络情况或运行缓慢的设备。无需等待所有的 JavaScript 都完成下载并执行,才显示服务器渲染的标记,所以你的用户将会更快速地看到完整渲染的页面。通常可以产生更好的用户体验,并且对于那些「内容到达时间(time-to-content)与转化率直接相关」的应用程序而言,服务器端渲染(SSR)至关重要。
25
25
@@ -31,7 +31,7 @@ Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏
31
31
32
32
- 更多的服务器端负载。在 Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用 CPU 资源(CPU-intensive - CPU 密集),因此如果你预料在高流量环境(high traffic)下使用,请准备相应的服务器负载,并明智地采用缓存策略。
33
33
34
- 在对你的应用程序使用服务器端渲染(SSR)之前,你应该问第一个问题是否真的需要它 。这主要取决于内容到达时间(time-to-content)对应用程序的重要程度。例如,如果你正在构建一个内部仪表盘,初始加载时的额外几百毫秒并不重要,这种情况下去使用服务器端渲染(SSR)将是一个小题大作之举。然而,内容到达时间(time-to-content)要求是绝对关键的指标,在这种情况下,服务器端渲染(SSR)可以帮助你实现最佳的初始加载性能。
34
+ 在对你的应用程序使用服务器端渲染(SSR)之前,你应该问的第一个问题是,是否真的需要它 。这主要取决于内容到达时间(time-to-content)对应用程序的重要程度。例如,如果你正在构建一个内部仪表盘,初始加载时的额外几百毫秒并不重要,这种情况下去使用服务器端渲染(SSR)将是一个小题大作之举。然而,内容到达时间(time-to-content)要求是绝对关键的指标,在这种情况下,服务器端渲染(SSR)可以帮助你实现最佳的初始加载性能。
35
35
36
36
## 服务器端渲染 vs 预渲染(SSR vs Prerendering)
37
37
@@ -41,9 +41,9 @@ Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏
41
41
42
42
## 关于此指南
43
43
44
- 本指南专注于,使用 Node.js server 的服务器端单页面应用程序渲染。将 Vue 服务器端渲染(SSR)与其他后端设置进行混合使用,是其它后端自身的一个主题,本指南不包括在内 。
44
+ 本指南专注于,使用 Node.js server 的服务器端单页面应用程序渲染。将 Vue 服务器端渲染(SSR)与其他后端设置进行混合使用,是后端自身集成 SSR 的话题,我们会在 [ 专门章节 ] ( ./non-node.md ) 中进行简要讨论 。
45
45
46
- 本指南将会非常深入,并且假设你已经熟悉 Vue.js 本身,并且具有 Node.js 和 webpack 的相当不错的应用经验。如果你倾向于使用提供了平滑开箱即用体验的更高层次解决方案,你应该去尝试使用 [ Nuxt.js] ( http ://nuxtjs.org/) 。它建立在同等的 Vue 技术栈之上,但抽象出很多模板,并提供了一些额外的功能,例如静态站点生成。但是,如果你需要更直接地控制应用程序的结构,Nuxt.js 并不适合这种使用场景。无论如何,阅读本指南将更有助于更好地了解一切如何运行。
46
+ 本指南将会非常深入,并且假设你已经熟悉 Vue.js 本身,并且具有 Node.js 和 webpack 的相当不错的应用经验。如果你倾向于使用提供了平滑开箱即用体验的更高层次解决方案,你应该去尝试使用 [ Nuxt.js] ( https ://nuxtjs.org/) 。它建立在同等的 Vue 技术栈之上,但抽象出很多模板,并提供了一些额外的功能,例如静态站点生成。但是,如果你需要更直接地控制应用程序的结构,Nuxt.js 并不适合这种使用场景。无论如何,阅读本指南将更有助于更好地了解一切如何运行。
47
47
48
48
当你阅读时,参考官方 [ HackerNews Demo] ( https://github.com/vuejs/vue-hackernews-2.0/ ) 将会有所帮助,此示例使用了本指南涵盖的大部分技术。
49
49
0 commit comments