前后端分离之SEO优化--------以vue为例
前言----SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度。通过搜索引擎查找信息是当今网民们寻找网上信息和资源的主要手段。 历史概况:十年前,几乎所有网站都使用 ASP、Java
前言----SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度。通过搜索引擎查找信息是当今网民们寻找网上信息和资源的主要手段。
历史概况:
十年前,几乎所有网站都使用 ASP、Java、PHP 这类做后端渲染,但后来随着 jQuery、Angular、React、Vue 等 JS 框架的崛起,开始转向了前端渲染。从 2014 年起又开始流行了同构渲染,号称是未来,集成了前后端渲染的优点,但转眼间三年过去了,很多当时壮心满满的框架(rendr、Lazo)从先驱变成了先烈。同构到底是不是未来?自己的项目该如何选型?我想不应该只停留在追求热门和拘泥于固定模式上,忽略了前后端渲染之“争”的“核心点”,关注如何提升“用户体验”。
明确三个概念:「后端渲染」指传统的 ASP、Java 或 PHP 的渲染机制;「前端渲染」指使用 JS 来渲染页面大部分内容,代表是现在流行的 SPA 单页面应用;「同构渲染」指前后端共用 JS,首次渲染时使用 Node.js 来直出 HTML。一般来说同构渲染是介于前后端中的共有部分。
1.网站的渲染模式----服务端渲染和客户端渲染
1.1服务端渲染(后端渲染SSR)
1.2客户端渲染(前端渲染CSR)------SPA---单页面应用
2.前端渲染遇到的问题---seo和首屏问题
SEO 很好理解。由于传统的搜索引擎只会从 HTML 中抓取数据,导致前端渲染的页面无法被抓取。前端渲染常使用的 SPA 会把所有 JS 整体打包,无法忽视的问题就是文件太大,导致渲染前等待很长时间。特别是网速差的时候,让用户等待白屏结束并非一个很好的体验。2.1解决前端渲染SEO问题
近几年,随之前端SPA框架的兴起;由前后端分离带来的SEO问题,相信每个前端攻城狮都有遇到。这里以Vue为例来说说解决SEO的方法;2.1.1 vue------SSR
服务器渲染的 Vue.js 应用程序也可以被认为是"同构"或"通用",因为应用程序的大部分代码都可以在服务器和客户端上运行。
具体的使用指南--------------------------------请移步官方文档
2.1.2 vue------Nuxt.js
从头搭建一个服务端渲染的应用是相当复杂的。幸运的是 Nuxt.js 让这一切变得非常简单。Nuxt 是一个基于 Vue 生态的更高层的框架,为开发服务端渲染的 Vue 应用提供了极其便利的开发体验。更酷的是,你甚至可以用它来做为静态站生成器。推荐尝试。Nuxt.js是创建Universal Vue.js应用程序的框架。
它的主要范围是UI渲染,同时抽象出客户端/服务器分布。
我们的目标是创建一个足够灵活的框架,以便您可以将其用作主项目库或基于Node.js的当前项目。
Nuxt.js预先设置了使Vue.js应用服务器的开发更加愉快的所有配置。
另外,我们还提供另一个名为nuxt generate的部署选项。它将构建一个静态生成的 Vue.js应用程序。我们相信这个选择可能是微软服务开发Web应用程序的下一个重要步骤。
作为一个框架,Nuxt.js提供了很多功能,可以帮助您在客户端和服务器端之间进行开发,如异步数据,中间件,布局等。
以上是Nuxt.js的官方介绍,总的来说Nuxt.js是一个基于Vue的框架,大部分都是vue的东西,看一遍例子再研究研究,也是很容易上手的。总体来说是个不错的框架,不需要去配置webpack那些繁琐的东西,很大程度上的让vue-ssr更加的亲民了。
个人感觉nuxt的性价比有点低,其实我建议你自己用vue-ssr接口去实现 需要实现的功能可以从nuxt里扒这样构建工程的思路更清晰些。
2.2预渲染的方式---prerender(解决SEO,首屏问题)
var PrerenderSpaPlugin = require('prerender-spa-plugin')
var webpackConfig = merge(baseWebpackConfig, {
plugins: [
//这段代码意思是拷贝static文件至根目录使得渲染的文件可以找到js、css
new CopyWebpackPlugin([{
from: 'static'
}]),
new PrerenderSpaPlugin(
//将渲染的文件放到dist目录下
path.join(__dirname, '../dist'),
//需要预渲染的路由信息
[ '/','/introduct','/culture','/Chairman','/president','/fund','/news','/honor' ],
{
//在一定时间后再捕获页面信息,使得页面数据信息加载完成
captureAfterTime: 50000,
//忽略打包错误
ignoreJSErrors: true,
phantomOptions: '--web-security=false',
maxAttempts: 10,
}
),
另:Prerender需要路由使用history模式,使用hash模式会导致失效。
更多推荐
所有评论(0)