浅谈在不使用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获取下拉列表的值为null的解决方法
Mar 18 Javascript
javascript删除字符串最后一个字符
Jan 14 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
JavaScript提高性能知识点汇总
Jan 15 Javascript
Bootstrap carousel轮转图的使用实例详解
May 17 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
微信小程序 教程之注册程序
Oct 17 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
vue在手机中通过本机IP地址访问webApp的方法
Aug 15 Javascript
详解vue 2.6 中 slot 的新用法
Jul 09 Javascript
Vue2.0实现简单分页及跳转效果
Jul 29 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
Php注入点构造代码
2008/06/14 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
浅析php原型模式
2014/11/25 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python错误处理操作示例
2018/07/18 Python
python实现动态创建类的方法分析
2019/06/25 Python
python装饰器常见使用方法分析
2019/06/26 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
thinkphp5 路由分发原理
2021/03/18 PHP
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
美国性感内衣店:Yandy
2018/06/12 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
化工工艺专业求职信
2013/09/22 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技