vue项目不被百度收录怎么办、seo优化问题

前言:最近做了一个官网项目,框架选择的vue,开发完上线之后发现不被百度收录,关键词和描述也只能抓取到首页的,今天来分享下最后是怎么解决的。

先说一下传统页面和框架开发的区别

  • 传统html是通过a标签跳转来作为切换的,每一个页面都是一个html,这样百度很容易抓取到的,也能顺着a链接到你的子级页面。
  • 像vue、react、angular开发的都是spa应用,他只有一个页面index,他们都是内加载,动态加载切换路由的,所以你再多页面百度蜘蛛只能爬到首页,这就是spa的一大痛点

想具体了解单页面应用和多页面应用区别的自行百度下这里先不多说了哈

说下两种解决方案的区别各自根据开发需求选择解决方案:

第一种:
SSR:服务端渲染(Server Side Render),即:网页是通过服务端渲染生成后输出给客户端。比如JSP、PHP、JavaWeb等都是SSR架构,也就是服务端取出数据和模板组合生成 html 输出给前端,前端发生请求时,重新向服务端请求 html 资源,路由也由服务端来控制。

  • Nuxt.js是vue官方给我们提供了一种SSR框架:它是使用 Webpack 和 Node.js 进行封装的基于Vue的SSR框架,不需要自己搭建一套 SSR 程序,而是通过其约定好的文件结构和API就可以实现一个首屏渲染的 Web 应用。
  • 开发难度:因为Nuxt.js也是一种框架,新项目推荐使用,如果是旧项目,小点的话还好,项目大的话改起来很麻烦,或者重构,配置繁琐,优点:能即时渲染,也是实际商业应用中大部分所需要的

第二种:
预渲染:它只在构建时为了特定的路由生成特定的几个静态页面,等于我们可以通过 Webpack 插件将一些特定页面组件 build 时就编译为 HTML 文件,直接以静态资源的形式输出给搜索引擎。

  • 开发难度:配置简单,容易上手,优点是:设置预渲染简单,并可以将你的前端作为一个完全静态的站点,缺点是不能像SSR一样即时渲染。

今天说下预渲染解决方案的具体使用:

  1. 安装
cnpm install prerender-spa-plugin --save
  1. 在router.js看下路由模式是不是 ‘history’,不是的请换成history
  2. 在vue.config.js配置(本人使用的是3.0脚手架自行创建的)
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({
                        staticDir: path.join(__dirname, 'dist'),
                        routes: ['/', '/cityDetail', '/footer', '/nav', '/partner', '/teacher', '/contact', '/site', '/product', '/aboutus', '/ingclass', '/ideaTheory', '/idea', '/train', '/childrenrecovery', '/patriarch'],
                        renderer: new PrerenderSPAPlugin.PuppeteerRenderer({
                            renderAfterTime: 5000
                        })
                    })
                ],
            };
        }
    }
  1. 在main.js里加入配置
new Vue({
  router,
  store,
  render: h => h(App),
  mounted () {
    document.dispatchEvent(new Event('render-event'))
  }
}).$mount('#app')

然后执行你的打包命令

在这里插入图片描述
如上图打包出来像我一样每个页面都有自己的文件夹并对应自己的页面index就完成了,这样就把单页面打包成了多页面


SSR解决方案(Nuxt.js)的使用:Nuxt.js框架具体使用方法,推荐使用


总结

每个框架都有他自己对应的ssr方案,今天这里提到了vue的,有心的童鞋可以自行查阅其他框架方面的

再说几点关于seo方面的小技巧

  • 多使用语义化标签,用header,section、footer把区域模块都划分清楚,这样也有利于蜘蛛爬取
  • 多使用h标签,尤其是h1,蜘蛛会认为你这是重要文案
  • 给每个页面(mate)添加自己的关键词、描述和标题,vue怎么添加的不会的同学 上车

end~~~

如有错误或观点不一致的请评论留言共同讨论,本人前端小白一枚,根据自己实际项目遇到的问题进行总结分享,谢谢大家的阅读!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值