浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)


Posted in Javascript onNovember 08, 2018

上一篇说了vue单页面解决解决SEO的问题

只是用php预处理了meta标签

但是依然没有内容填充,所以对于内容抓取依然有些乏力,只是解决了从无到有的问题

那接下来可以更进一步的预填充内容了

预填充内容

这里依然使用php来实现

首先在php中拉取需要填充的数据,列表或是具体内容

修改拉取数据部分

$urlExp = explode('/',$_SERVER['REQUEST_URI']);
if(count($urlExp)>2 && $urlExp[1] == 'article'){
  //文章页拉取内容
  $ret = @json_decode(http_Req('http://127.0.0.1/api/Blog/getsinglelist',['tuid'=>$urlExp[2]],'POST'),true);
  if($ret){
    $valKeywords = $ret['info'][0]['tt'].','.$valKeywords;
    $valDescription = $ret['info'][0]['txt'].' - '.$valTitle.','.$valDescription;
    $valTitle = $ret['info'][0]['tt'].' - '.$valTitle;
    $info = $ret['info'][0]['info'];
    $textData = @file_get_contents("你的文章路径") ?? $valDescription;
  }else{
    $textData='none';
  }
}

if(!$textData){
  //列表页拉取列表
  $ret = @json_decode(http_Req('http://127.0.0.1/api/Blog/getlist',['page'=>1,'type'=>0],'POST'),true);
  if($ret){
    $textData = '';
    foreach ($ret['info'] as $key=>$val) {
      $textData.='标题:'.$val['tt'].'.';
      $textData.='描述:'.$val['txt'].'.';
      $textData.='创建时间:'.$val['ctime'].'.';
      $textData.='浏览次数:'.$val['fl'].'.';
    }
  }
}

然后在html部分输出相关内容

在body下放一个div,并且隐藏掉他

<div class="pre-view" style="position:absolute;z-index: -99999;opacity: 0;top: -9999px;left: -9999px">
  <?php echo $textData; ?>
</div>

这样爬虫就可以抓取到我们的内容并且不影响前端渲染

优化vue构建

之前的构建是在构建完成后修改html为php,有点蠢

这里改下webpack的配置就好了

修改 build/webpack.prod.conf

new HtmlWebpackPlugin({
 filename: config.build.index,
 //这里改为index.php
 template: 'index.php',
 inject: true,
 minify: {
  removeComments: true,
  collapseWhitespace: true,
  removeAttributeQuotes: true
  // more options:
  // https://github.com/kangax/html-minifier#options-quick-reference
 },
 // necessary to consistently work with multiple chunks via CommonsChunkPlugin
 chunksSortMode: 'dependency'
}),

修改 config/index.js

build: {
 // Template for index.html
 // 这里改为index.php
 index: path.resolve(__dirname, '../dist/index.php'),

 // Paths
 assetsRoot: path.resolve(__dirname, '../dist'),
 assetsSubDirectory: 'static',
 assetsPublicPath: 'http://cdn.linkvall.cn/',

 productionSourceMap: true,

 devtool: '#source-map',

 productionGzip: false,
 productionGzipExtensions: ['js', 'css'],

 bundleAnalyzerReport: true
}

这样构建时候的入口文件就变成index.php,构建完成的页面入口也为index.php

最终效果

等爬虫更新后就搜到我们的文章了

浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)

写在最后

  • 目前还是用php来实现主要是实现起来比较简单,对于像我一样后端是php的比较友好
  • 如果再使用node去监听个端口的话需要额外开销和额外的精力去维护
  • 如果后端是纯node的当然用node或者直接配置个SSR更好
  • 关于首页渲染问题推荐是用骨架屏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
XRegExp 0.2: Now With Named Capture
Nov 30 Javascript
jQuery 学习第五课 Ajax 使用说明
May 17 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
JavaScript中输出标签的方法
Aug 27 Javascript
原生javascript获取元素样式
Dec 31 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
通过扫小程序码实现网站登陆功能
Aug 22 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 #Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 #Javascript
Angular设置别名alias的方法
Nov 08 #Javascript
vue-cli安装使用流程步骤详解
Nov 08 #Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 #Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
Nov 08 #Javascript
Vue实现简易翻页效果源码分享
Nov 08 #Javascript
You might like
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
简单实现Python爬取网络图片
2018/04/01 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
python小程序实现刷票功能详解
2019/07/17 Python
python 实现return返回多个值
2019/11/19 Python
Python标准库itertools的使用方法
2020/01/17 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
UML设计模式笔试题
2014/06/07 面试题
优秀毕业生求职推荐信范文
2013/11/21 职场文书
先进个人评语大全
2015/01/04 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
新教师教学工作总结
2015/08/14 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang