浅谈在不使用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 相关文章推荐
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
Mar 04 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
Javascript函数式编程语言
Oct 11 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
关于在mongoose中填充外键的方法详解
Aug 14 Javascript
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
Vue插件之滑动验证码
Sep 21 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 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分页思路以及在ZF中的使用
2012/05/30 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
PHP中16个高危函数整理
2019/09/19 PHP
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python3中str(字符串)的使用教程
2017/03/23 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python 自动去除空行的实例
2018/07/24 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
求职信需要的五点内容
2014/02/01 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
教师暑期培训感言
2014/08/15 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
大学学生个人总结
2015/02/15 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技