没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
优化向:单⻚应⽤多路由预渲染指南
前⾔
2017 年 10 ⽉ 13 ⽇
Ajax 技术的出现,让我们的 Web 应⽤能够在不刷新的状态下显⽰不同⻚⾯
的内容,这就是单⻚应⽤。在⼀个单⻚应⽤中,往往只有⼀个 html ⽂件,
然后根据访问的 url 来匹配对应的路由脚本,动态地渲染⻚⾯内容。单⻚应
⽤在优化了⽤户体验的同时,也给我们带来了许多问题,例如 SEO 不友
好、⾸屏可⻅时间过⻓等。服务端渲染(SSR)和预渲染(Prerender)技
术正是为解决这些问题⽽⽣的。
阅读本⽂,你能够了解到什么是预渲染、预渲染与服务端渲染的异同以及预
渲染在 Vue.js 项⺫中的使⽤。
服务端渲染与预渲染
⼀些概念
1. 客户端渲染:⽤户访问 url,请求 html ⽂件,前端根据路由动态渲染⻚
⾯内容。关键链路较⻓,有⼀定的⽩屏时间;
2. 服务端渲染:⽤户访问 url,服务端根据访问路径请求所需数据,拼接
成 html 字符串,返回给前端。前端接收到 html 时已有部分内容;
3. 预渲染:构建阶段⽣成匹配预渲染路径的 html ⽂件(注意:每个需要
预渲染的路由都有⼀个对应的 html)。构建出来的 html ⽂件已有部分
内容。
下图简单展⽰了客户端渲染、服务端渲染和预渲染的请求流程。
本⽂⽰例使⽤ vue-cli ⽣成,点击这⾥查看⽰例。dist ⺫录是启⽤了预渲染
的打包⺫录,dist2 ⺫录则是普通客户端渲染的打包⺫录。通过对⽐⺫录中
的⽂件,你可以对预渲染有个初步的了解。若你还是不知道什么是预渲染,
不妨先通读全⽂。
共同点
针对单⻚应⽤,服务端渲染和预渲染共同解决的问题:
1. SEO:单⻚应⽤的⺴站内容是根据当前路径动态渲染的,html ⽂件中
往往没有内容,⺴络爬⾍不会等到⻚⾯脚本执⾏完再抓取;
2. 弱⺴环境:当⽤户在⼀个弱环境中访问你的站点时,你会想要尽可能快
的将内容呈现给他们。甚⾄是在 js 脚本被加载和解析前;
3. 低版本浏览器:⽤户的浏览器可能不⽀持你使⽤的 js 特性,预渲染或
服务端渲染能够让⽤户⾄少能够看到⾸屏的内容,⽽不是⼀个空⽩的⺴
⻚。
预渲染能与服务端渲染⼀样提⾼ SEO 优化,但前者⽐后者需要更少的配
置,实现成本低。弱⺴环境下,预渲染能更快地呈现⻚⾯内容,减少⻚⾯可
⻅时间。
不适合的场景
那什么场景下不适合使⽤预渲染呢:
1. 个性化内容:对于路由是 /my-profile 的⻚⾯来说,预渲染就失效了。
因为⻚⾯内容依据看它的⼈⽽显得不同;
2. 经常变化的内容:如果你预渲染⼀个游戏排⾏榜,这个排⾏榜会随着新
的玩家记录⽽更新,预渲染会让你的⻚⾯显⽰不正确直到脚本加载完成
并替换成新的数据。这是⼀个不好的⽤户体验;
3. 成千上万的路由:不建议预渲染⾮常多的路由,因为这会严重拖慢你的
构建进程。
Prerender SPA Plugin
prerender-spa-plugin 是⼀个 webpack 插件⽤于在单⻚应⽤中预渲染静
态 html 内容。因此,该插件限定了你的单⻚应⽤必须使⽤ webpack 构
建,且它是框架⽆关的,⽆论你是使⽤ React 或 Vue 甚⾄不使⽤框架,都
能⽤来进⾏预渲染。本⽂⽰例基于 Vue.js 2.0 + vue-router。
下⽂会从⽣成项⺫讲起,然后看下没有配置预渲染前的样⼦,再配置预渲染
进⾏构建,对⽐前后的差别。
⽣成项⺫
⾸先⽣成⼀个项⺫并安装依赖。
vue init webpack vue-prerender-demo
cd vue-prerender-demo && npm install
组件开发过程我们不关注,具体可以查看⽰例源代码。开发完成视图如下。
剩余13页未读,继续阅读
高中化学孙环宇
- 粉丝: 9
- 资源: 338
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0