前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >静态文件方法解决Vue SEO的尝试

静态文件方法解决Vue SEO的尝试

作者头像
羽翰尘
修改2019-11-26 16:54:29
1.4K0
修改2019-11-26 16:54:29
举报
文章被收录于专栏:技术向技术向

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/try_seo_vue/

背景

最近在做一个Baas + Element UI + Vue的动态博客,原型是Codebear的作品,不同之处是他的后端采用了Mysql + php。我修改了一下前端代码,使其支持Baas。修改完后终于要解决一个重大的问题:SEO。

Vue或者单页面应用的好处是用户体验好,与服务器交换的数据少;弊端是搜索引擎无法收录内容页。Vue SEO也有很多解决方案,如 Vue SSR,PreRender等等。简单看了下,这些方案大多需要服务器运行特定程序,如nodejs,判断User Agent选择服务端渲染或者前端渲染。这些文档看得我头疼,实在是太复杂且不适合我的应用场景。

应用场景:博客网站,文章内容页需要SEO, 后台管理不需要,但Codebear的博客系统内容页和管理页统一用vue。之前采用hexo生成静态文件,放到腾讯云COS的方式,已经有数百个静态页面。

方案

想了一种新的解决方案(在搜索引擎中没找到),并进行了初步尝试。

方案描述:前端在渲染完成后,获取整个html文档(DOM树),并传输到静态文件托管服务器,放到url所指定的路径下。由于只是一次简单的尝试,没有写JS代码,使用Chrome浏览器的调试功能,在Element选项卡中的html tag处右键选择Edit as HTML,之后全选复制粘贴到一个html文档中。如下图所示。

在腾讯云COS管理平台新建文件夹try_seo_vue, 将html文档重命名为index.html放到这个文件夹下。并把该文档所需的静态文件(js、css、image)也放到指定路径。

新浏览器页面中访问这个链接, 能够看到之前保存的静态页面。部分链接点不开,因为使用了动态的router.push.

问题

这种方案也可能会存在其他问题:

  1. JS能否获取渲染之后的html文档, 或者vue有没有函数是可以直接输出渲染后的字符串?
  2. 前端发送的页面是否可信,是否会被篡改
  3. 内容页的动态内容无法加载,如最近文章、相关文章、评论、阅读量等等

不知道这种方式有没有什么问题?还望各位大佬不吝赐教,如果没问题就开始干了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 方案
  • 问题
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档