当前位置: 首页 > news >正文

宁夏自治区住房与城乡建设厅网站郑州网站推广培训

宁夏自治区住房与城乡建设厅网站,郑州网站推广培训,浪起网站建设,乡镇网站建设内容规划前言 Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用。在一个单页应用中,往往只有一个 html 文件,然后根据访问的 url 来匹配对应的路由脚本,动态地渲染页面内容。单页应用…

前言
Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用。在一个单页应用中,往往只有一个 html 文件,然后根据访问的 url 来匹配对应的路由脚本,动态地渲染页面内容。单页应用在优化了用户体验的同时,也给我们带来了许多问题,例如 SEO 不友好、首屏可见时间过长等。服务端渲染(SSR)和预渲染(Prerender)技术正是为解决这些问题而生的。

服务端渲染与预渲染区别

客户端渲染
用户访问 url,请求 html 文件,前端根据路由动态渲染页面内容。关键链路较长,有一定的白屏时间;

服务端渲染
用户访问 url,服务端根据访问路径请求所需数据,拼接成 html 字符串,返回给前端。前端接收到 html 时已有部分内容;

预渲染
构建阶段生成匹配预渲染路径的 html 文件(注意:每个需要预渲染的路由都有一个对应的 html)。构建出来的 html 文件已有部分内容

服务端渲染与预渲染共同点

针对单页应用,服务端渲染和预渲染共同解决的问题:

SEO
单页应用的网站内容是根据当前路径动态渲染的,html 文件中往往没有内容,网络爬虫不会等到页面脚本执行完再抓取;
弱网环境
当用户在一个弱环境中访问你的站点时,你会想要尽可能快的将内容呈现给他们。甚至是在 js 脚本被加载和解析前;
低版本浏览器
用户的浏览器可能不支持你使用的 js 特性,预渲染或服务端渲染能够让用户至少能够看到首屏的内容,而不是一个空白的网页。
预渲染能与服务端渲染一样提高 SEO 优化,但前者比后者需要更少的配置,实现成本低。弱网环境下,预渲染能更快地呈现页面内容,减少页面可见时间。

什么场景下不适合使用预渲染

个性化内容
对于路由是 /my-profile 的页面来说,预渲染就失效了。因为页面内容依据看它的人而显得不同;

经常变化的内容
如果你预渲染一个游戏排行榜,这个排行榜会随着新的玩家记录而更新,预渲染会让你的页面显示不正确直到脚本加载完成并替换成新的数据。这是一个不好的用户体验;

成千上万的路由
不建议预渲染非常多的路由,因为这会严重拖慢你的构建进程。

Prerender SPA Plugin
prerender-spa-plugin 是一个 webpack 插件用于在单页应用中预渲染静态 html 内容。因此,该插件限定了你的单页应用必须使用 webpack 构建,且它与用什么框架无关,无论你是使用 React 或 Vue 甚至不使用框架,都能用来进行预渲染

prerender-spa-plugin 原理
那么 prerender-spa-plugin 是如何做到将运行时的 html 打包到文件中的呢?原理很简单,就是在 webpack 构建阶段的最后,在本地启动一个 phantomjs,访问配置了预渲染的路由,再将 phantomjs 中渲染的页面输出到 html 文件中,并建立路由对应的目录。

安装使用

yarn 或者 npm

yarn add prerender-spa-plugin -D
npm install prerender-spa-plugin --save-dev

前端配置,vue.config.js中增加

const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('path');
module.exports = {configureWebpack: config => {if (process.env.NODE_ENV !== 'production') return;return {plugins: [new PrerenderSPAPlugin({// 生成文件的路径,也可以与webpakc打包的一致。// 下面这句话非常重要!!!// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。staticDir: path.join(__dirname, 'dist'),// 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。routes: ['/', '/product', '/about'],// 这个很重要,如果没有配置这段,也不会进行预编译renderer: new Renderer({inject: {foo: 'bar'},headless: false,...})})]}}
}

在 main.js 中

new Vue({router,store,render: h => h(App),mounted() {document.dispatchEvent(new Event('render-event'))}
}).$mount('#app')

router.js 中设置mode: “history”

运行npm run build,看一下生成的 dist 的目录里是不是有每个路由名称对应的文件夹。然后找个 目录里 的 index.html 用IDE打开,看文件内容里是否有该文件应该有的内容。有的话,就设置成功了
如果你想修改每个页面的meta 信息,这里推荐使用 vue-meta

http://www.mnyf.cn/news/49862.html

相关文章:

  • mt4网站建设广州网站维护
  • 2008 iis搭建网站百度电脑版下载官网
  • 公司网站建站哪个系统好用软件开发公司简介
  • 长沙好的网站建设公司排名产品软文范例500字
  • 政府网站集群建设工作方案营销型网站建设解决方案
  • 阿里云做网站需要些什么软件广州百度推广客服电话多少
  • 做网站的域名网站建设开发
  • 电商加盟网站建设广州今日头条新闻最新
  • 杂粮网站建设的必要性什么推广方式能快速引流
  • 广西庆海建设发展有限公司网站微信广告投放推广平台
  • 平顶山市建设局网站快速建网站
  • 做爰全过程免费网站可以看站内营销推广方式
  • 淘宝里面的网站怎么做的谷歌关键词工具
  • 房屋 哪个网站做的最好搜外滴滴友链
  • 一学一做演讲视频网站百度竞价托管费用
  • 做网站 不是计算机专业晚上看b站
  • 查域名的网站百度快速排名用什
  • 网页设计制作课程baike seotl
  • 全国互联网备案信息查询系统湖南seo网站开发
  • 网站开发合作协议合同范本seo排名优化推荐
  • 佛山做网站格搜索网站排名优化
  • 西安做搭建网站网络营销工具及其特点
  • 北京朝阳住房建设委员会网站产品推广广告
  • 灌南网站开发seo怎么刷排名
  • 三元里网站建设百度推广开户费用多少
  • 如何利用wordpress广州谷歌优化
  • 东莞市微客巴巴做网站网络优化工程师有多累
  • 网站建设期末作业网络优化工程师简历
  • 怎样吧自己做的网站发布短视频seo询盘系统
  • 网页设计与网站建设在线作业答案东莞百度搜索优化