谷歌Vue怎么解决SEO问题?实用方法有哪些

文章摘要

谷歌Vue SEO常见问题做Vue项目的朋友可能都遇到过这样的情况:网站在浏览器里看着挺正常,内容也丰富,但用谷歌搜索自己的关键词,翻了好几页都找不到影子,这可不是谷歌偏心,主要是Vue的“脾气”跟搜索引擎有点合不来,Vue作为单页应用(SPA)的代表,默认用的是客户端渲染——简单说就是页面加载时先给你一个空壳……

谷歌Vue SEO常见问题

做Vue项目的朋友可能都遇到过这样的情况:网站在浏览器里看着挺正常,内容也丰富,但用谷歌搜索自己的关键词,翻了好几页都找不到影子,这可不是谷歌偏心,主要是Vue的“脾气”跟搜索引擎有点合不来,Vue作为单页应用(SPA)的代表,默认用的是客户端渲染——简单说就是页面加载时先给你一个空壳子,然后通过JavaScript动态加载内容,这就像你去朋友家做客,门开了但人还在里屋收拾,客人站在门口半天看不到东西,谷歌爬虫也是这个“客人”,等不及动态加载就走了,自然抓不到内容。

我之前帮一个做电商的朋友优化过他们的Vue网站,当时他们的产品页在谷歌里完全搜不到,老板急得不行,后来一查,发现他们用的是纯客户端渲染,页面源代码里除了一堆JS脚本,几乎看不到产品名称、价格这些关键信息,谷歌爬虫爬过来,看到的就是个“空架子”,怎么可能收录呢?这就是谷歌Vue SEO最常见的问题——客户端渲染导致内容无法被有效抓取

抓取问题,还有个麻烦事是URL,Vue单页应用经常用哈希路由(就是带#的URL),#/product/123”,谷歌虽然现在能处理部分哈希路由,但对这种URL的权重判断还是比较模糊,而且用户分享链接时也显得不够专业,页面加载速度也是个坑,客户端渲染需要加载大量JS文件,页面加载慢了不仅影响用户体验,谷歌的排名算法也会扣分,毕竟谁也不想等半天看一个空白页。

解决谷歌Vue SEO的方法

知道了问题在哪,解决起来就有方向了,目前最主流的方法有三种:服务端渲染(SSR)、静态站点生成(SSG)和预渲染,这三种方法各有各的脾气,得根据项目情况选。

先说说服务端渲染(SSR),简单讲就是把Vue组件在服务器端先渲染成完整的HTML页面,再发给浏览器,就像餐馆提前把菜做好,客人来了直接端上桌,不用等厨师现炒,我之前给那个电商朋友用的就是Nuxt.js,这是个基于Vue的SSR框架,配置不算复杂,当时我们把产品详情页改成了SSR,部署后不到一周,谷歌就收录了大半产品页,老板高兴得请我吃了顿火锅,SSR的好处是内容实时性强,适合频繁更新的页面,比如新闻、电商商品页,但缺点是服务器压力会大一些,部署也比纯前端项目麻烦点。

再说说静态站点生成(SSG),这个比SSR更“懒”一点——在构建的时候就把页面渲染成静态HTML文件,用户访问时直接返回静态文件,这种方法适合内容不怎么变的网站,比如公司官网、博客,我自己的技术博客就是用VuePress(基于Vue的SSG工具)做的,写好文章后执行构建命令,所有页面都变成了HTML,谷歌爬虫爬起来那叫一个顺畅,现在搜“前端性能优化技巧”,我的博客经常排在前几页,SSG的优点是加载速度快、服务器压力小,缺点是内容更新需要重新构建,不适合实时性要求高的场景。

预渲染,这个方法比较“取巧”,它会在构建时针对指定的路由生成静态HTML,其他路由还是用客户端渲染,有点像给重点页面开小灶,比如首页、热门产品页,如果你的网站大部分页面不需要SEO,只有少数几个关键页面需要被谷歌收录,预渲染就很合适,我之前帮一个做作品集的设计师朋友用过prerender-spa-plugin,只预渲染了首页和几个代表作品页,既解决了SEO问题,又没增加太多构建时间,预渲染的优点是配置简单,对原有项目改动小,缺点是如果页面太多,构建时间会很长。

谷歌Vue怎么解决SEO问题?实用方法有哪些

谷歌Vue SEO优化案例

去年我接手了一个本地生活服务平台的Vue项目,他们主要做美食推荐和优惠券,老板说网站上线半年了,谷歌搜索“XX市美食优惠券”愣是搜不到他们,我先看了下他们的技术栈:Vue 3 + Vue Router,用的是哈希路由,纯客户端渲染,打开页面源代码,果然,除了“

”,几乎看不到实际内容,谷歌爬虫来了肯定抓瞎。

当时他们预算有限,服务器配置也一般,直接上SSR怕扛不住,我跟老板商量后,决定先用预渲染试试水,重点优化首页和热门美食分类页,我用了prerender-spa-plugin,在vue.config.js里配置了需要预渲染的路由,然后修改了路由模式,把哈希路由改成了history模式(需要后端配合配置404页面指向index.html),构建完成后,我打开预渲染生成的HTML文件,里面能看到美食名称、地址、优惠信息这些关键内容了,心里踏实了不少。

部署后大概过了10天,我让老板再搜“XX市美食优惠券”,结果在第二页就看到了他们的网站!虽然不是第一页,但比之前完全找不到强多了,老板又让我优化了几个热门商家的详情页,这次用了SSG,用Nuxt.js生成静态页面,部署到Netlify上(免费额度够他们用),又过了半个月,他们的几个核心页面已经稳定排在谷歌首页,优惠券领取量比之前翻了一倍多,这个案例说明,针对谷歌Vue SEO问题,不用盲目上复杂方案,根据项目实际情况选对方法,效果就能立竿见影

谷歌Vue SEO工具推荐

解决谷歌Vue SEO问题,光有方法还不够,得有趁手的工具帮忙,我用过不少工具,挑几个真心好用的分享给大家。

首推Nuxt.js,这是目前最流行的Vue SSR/SSG框架,相当于给Vue装了个“SEO引擎”,它的文档写得很详细,新手跟着教程走也能很快上手,我之前用Nuxt 3做过一个企业官网,用SSG模式构建,页面加载速度快得飞起,谷歌PageSpeed得分直接到了90+,而且Nuxt支持自动生成sitemap.xml,对谷歌收录特别友好。

如果只想用预渲染,prerender-spa-plugin是个不错的选择,它是个Webpack插件,配置简单,只需在Webpack里指定要预渲染的路由就行,不过要注意,它需要配合history模式路由使用,而且页面里的异步数据要等加载完再触发预渲染,不然可能会抓不到动态内容,我一般会在main.js里用document.addEventListener('DOMContentLoaded', () => { ... })确保数据加载完成。

谷歌官方的Search Console必须安排上,这工具就像给网站装了个“体检仪”,能看到谷歌爬虫的抓取情况、索引状态、关键词排名等,我每次优化完SEO,都会在Search Console里提交sitemap.xml,然后观察“覆盖率”报告,看看有没有抓取错误,比如之前那个电商项目,提交后发现有几个页面因为robots.txt设置错误被屏蔽了,及时改过来后,收录量很快就上去了。

还有一个小工具叫Vue Meta,专门用来管理页面的meta标签,SEO里标题、描述、关键词这些meta标签很重要,用Vue Meta可以在组件里动态设置,比如产品详情页可以根据不同产品ID设置不同的标题和描述,我在做那个美食平台时,用Vue Meta给每个商家页设置了“[商家名称] - [特色菜] 优惠券 - XX美食平台”这样的标题,谷歌搜索时相关性更高,排名自然更好。

谷歌Vue与其他框架SEO对比

有人可能会问,既然Vue做SEO这么麻烦,那用React、Angular是不是好点?其实各有各的情况,我对比过几个主流框架,给大家说道说道。

先看React,它的SSR方案主要是Next.js,跟Vue的Nuxt.js很像,都是成熟的框架,SEO效果也差不多,不过React的生态里静态生成工具更多,比如Gatsby,用GraphQL管理数据,适合内容丰富的网站,但React的学习曲线比Vue陡一点,如果你团队都是Vue开发者,没必要为了SEO特意换React。

再看Angular,它本身支持SSR(Angular Universal),配置比Vue和React麻烦一些,但性能很稳定,不过Angular的包体积通常比较大,页面加载速度可能会受影响,而谷歌现在很看重加载速度,这一点上Vue的轻量优势就体现出来了,我之前接触过一个用Angular做的电商网站,SSR配置花了不少时间,最后加载速度还是不如同类型的Vue+Nuxt项目。

还有传统的jQuery或者原生HTML开发的网站,SEO肯定是最直接的,毕竟都是静态内容,但现在网站交互越来越复杂,纯静态页面满足不了需求,Vue虽然需要额外处理SEO,但换来的是更好的用户体验和开发效率,这笔“交易”还是划算的,关键是选对方法,Vue的SEO问题完全可以解决,没必要因为这个放弃Vue的优势。

谷歌Vue SEO注意事项

优化谷歌Vue SEO,除了用对方法和工具,还有些细节不能忽略,不然可能白忙活一场。

路由模式,一定要用history模式,别用哈希模式(带#的URL),哈希模式下,谷歌虽然能抓取,但URL里的#后面部分不会被当作路径,不利于收录和排名,改成history模式后,记得让后端配置一下,把所有路由都指向index.html,不然刷新页面会404,我之前帮一个朋友改路由模式,后端没配置,结果用户一刷新就报错,差点被老板骂,还好及时解决了。

内容质量,别以为解决了抓取问题就万事大吉,谷歌最终看的还是内容,就算页面能被抓取,如果内容空洞、复制粘贴,照样排不上名,我那个美食平台的案例里,除了技术优化,我们还帮他们完善了每个商家的介绍,增加了用户评价展示,内容丰富了,谷歌自然更青睐。

还有页面加载速度,前面说过,Vue项目容易因为JS文件大导致加载慢,可以用Webpack打包优化,比如代码分割、懒加载,把不常用的组件拆分成单独的JS文件,只在需要时加载,我一般会在Vue Router里用懒加载配置:const Home = () => import('../views/Home.vue'),这样首页加载时就不用把所有组件都加载进来,速度能快不少。

移动端适配,谷歌现在用的是“移动优先索引”,也就是说先看你网站的移动端版本再决定排名,如果你的Vue项目在手机上体验很差,比如按钮太小、文字看不清,就算PC端SEO做得再好也没用,记得用响应式布局,测试不同屏幕尺寸下的显示效果,确保移动端用户体验过关。

常见问题解答

Vue为什么对谷歌SEO不友好啊?

因为Vue默认是客户端渲染呀,就是页面先加载个空壳子,然后用JS动态填内容,谷歌爬虫来的时候,JS还没跑完,看到的就是空白,自然抓不到东西,就像你给朋友写信,信封里没放信纸,朋友拆开啥也看不到,肯定记不住你写了啥,不过现在有SSR、SSG这些方法,能让Vue提前把内容准备好,谷歌爬虫就能看到啦。

谷歌能抓取Vue单页应用吗?

能是能,但要看情况,如果是纯客户端渲染的Vue单页应用,谷歌虽然会等JS执行完再抓取,但有时候等不及或者JS报错,就抓不到内容,要是用了SSR、SSG或者预渲染,把页面变成完整的HTML给谷歌,那抓取就没问题啦,我之前帮同学做的Vue博客,用了SSG,谷歌几天就收录了,现在搜他写的文章都能找到。

SSR和SSG哪个更适合Vue SEO啊?

看你网站内容动不动,如果内容经常变,比如新闻、电商商品页,就用SSR,它能实时生成最新内容,要是内容不怎么变,比如官网、博客,SSG就很合适,提前生成静态HTML,加载快还省服务器资源,我自己的博客用的SSG,写一篇文章构建一次,谷歌收录快得很,加载速度也嗖嗖的。

Vue SEO优化需要改很多代码吗?

看用啥方法啦,如果用预渲染,改的代码不多,主要是配置一下插件,指定要预渲染的路由,再把路由模式改成history就行,要是用Nuxt.js这种SSR/SSG框架,可能要把项目结构调整一下,但框架文档写得很清楚,跟着教程走不难,我之前帮一个朋友把纯Vue项目改成Nuxt,也就花了两天时间,主要是调整页面组件和路由配置,不算麻烦。

免费的Vue SEO工具有哪些啊?

可多啦!Nuxt.js和VuePress都是免费的,Nuxt能做SSR/SSG,VuePress适合做静态博客或文档,prerender-spa-plugin也是免费的,专门做预渲染,还有谷歌的Search Console,免费看网站在谷歌的收录情况,提交sitemap,Vue Meta能帮你动态设置meta标签,也是免费的,这些工具都很好用,我自己做项目经常用,一分钱不用花就能解决大部分SEO问题。