浅谈在不使用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 相关文章推荐
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
Jul 09 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
jQuery+pjax简单示例汇总
Apr 21 jQuery
js轮播图透明度切换(带上下页和底部圆点切换)
Apr 27 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
vue百度地图 + 定位的详解
May 13 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
Jun 25 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
vue v-on:click传递动态参数的步骤
Sep 11 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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
php实现webservice实例
2014/11/06 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python输出9*9乘法表的方法
2015/05/25 Python
python3编码问题汇总
2016/09/06 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Python随机数函数代码实例解析
2020/02/09 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
学生喝酒检讨书
2014/02/06 职场文书
大学生演讲稿
2014/04/25 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
2015年党员承诺书
2015/01/21 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
Python集合set()使用的方法详解
2022/03/18 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
instantclient客户端 连接oracle数据库
2022/04/26 Oracle