前言:最近做了一个官网项目,框架选择的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~~~

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

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐