vue实现的微信机器人聊天功能案例【附源码下载】


Posted in Javascript onFebruary 18, 2019

本文实例讲述了vue实现的微信机器人聊天功能。分享给大家供大家参考,具体如下:

先看效果:

vue实现的微信机器人聊天功能案例【附源码下载】

实现过程:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>HTML5模拟微信聊天界面</title>
  <style>
    /**重置标签默认样式*/
    * {
      margin: 0;
      padding: 0;
      list-style: none;
      font-family: '微软雅黑'
    }
    #container {
      width: 450px;
      height: 780px;
      background: #eee;
      margin: 80px auto 0;
      position: relative;
      box-shadow: 20px 20px 55px #777;
    }
    .header {
      background: #000;
      height: 40px;
      color: #fff;
      line-height: 34px;
      font-size: 20px;
      padding: 0 10px;
    }
    .footer {
      width: 430px;
      height: 50px;
      background: #666;
      position: absolute;
      bottom: 0;
      padding: 10px;
    }
    .footer input {
      width: 360px;
      height: 45px;
      outline: none;
      font-size: 20px;
      text-indent: 10px;
      position: absolute;
      border-radius: 6px;
      right: 80px;
    }
    .footer span {
      display: inline-block;
      width: 62px;
      height: 48px;
      background: #ccc;
      font-weight: 900;
      line-height: 45px;
      cursor: pointer;
      text-align: center;
      position: absolute;
      right: 10px;
      border-radius: 6px;
    }
    .footer span:hover {
      color: #fff;
      background: #999;
    }
    /* #user_face_icon {
      display: inline-block;
      background: red;
      width: 60px;
      height: 60px;
      border-radius: 30px;
      position: absolute;
      bottom: 6px;
      left: 14px;
      cursor: pointer;
      overflow: hidden;
    } */
    img {
      width: 60px;
      height: 60px;
    }
    .content {
      font-size: 20px;
      width: 435px;
      height: 662px;
      overflow: auto;
      padding: 5px;
    }
    .content li {
      margin-top: 10px;
      padding-left: 10px;
      width: 412px;
      display: block;
      clear: both;
      overflow: hidden;
    }
    .content li img {
      float: left;
    }
    .content li span {
      background: #7cfc00;
      padding: 10px;
      border-radius: 10px;
      float: left;
      margin: 6px 10px 0 10px;
      max-width: 310px;
      border: 1px solid #ccc;
      box-shadow: 0 0 3px #ccc;
    }
    .content li img.imgleft {
      float: left;
    }
    .content li img.imgright {
      float: right;
    }
    .content li span.spanleft {
      float: left;
      background: #fff;
    }
    .content li span.spanright {
      float: right;
      background: #7cfc00;
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="header">
      <span style="float: left;">微信聊天界面</span>
      <span style="float: right;">14:21</span>
    </div>
    <ul class="content">
      <li v-for="(item, index) in messageList" >
        <img :src="'./img/'+(item.isSelf?'r.png':'l.png')" :class="'img'+(item.isSelf?'right':'left')">
        <span :class="'span'+(item.isSelf?'right':'left')">{{item.message}}</span>
      </li>
    </ul>
    <div class="footer">
      <!-- 添加输入内容 -->
      <input id="text" type="text" placeholder="说点什么吧..." v-model="inputValue" @keyup.enter="chat">
      <!-- 给发送也绑定一个事件 -->
      <span id="btn" @click="chat">发送</span>
    </div>
  </div>
  <!-- 导入vue -->
  <script src="./lib/vue.js"></script>
  <!-- 导入jQuery -->
  <script src="./lib/jquery-1.12.4.min.js"></script>
  <!-- 开始代码 -->
  <script>
    /*
    思路分析:
    一.定义聊天信息数组格式
    [
      {
       message:'',
       isSelf:true(自己)/false(机器人)
      }
    ]
    二.获取自己输入内容,将内容渲染到页面
    三.获取机器人接口内容,也将内容渲染到页面
     */
    //一:
    let app = new Vue({
      el: "#container",
      data: {
        //输入内容,双向数据绑定
        inputValue: '',
        //聊天窗口内容
        messageList: []
      },
      methods: {
        chat() {
          // console.log(this.inputValue);
          // console.log(this);
          // 二.获取自己输入内容,将内容渲染到页面
          this.messageList.push({
            message: this.inputValue,
            isSelf: true
          })
          // 三.获取机器人接口内容,也将内容渲染到页面
          $.ajax({
            url:'http://www.tuling123.com/openapi/api',
            data:{
              userid:1,//添加id,实现上下文连贯
              key:'b6ef78a0c1f24fee90d2317139b9c3d5',
              info:this.inputValue
            },
            // 注意使用箭头函数,不然里面的this会发生变化
            success:(obj)=>{
              console.log(obj);
              // 三.获取机器人接口内容,也将内容渲染到页面
              this.messageList.push({
                message:obj.text,
                isSelf:false
              })
            }
          })
         this.inputValue='';  //最后清除文本框
        }
      },
    })
  </script>
</body>
</html>

附:gethub源码地址:https://github.com/huanggengzhong/jiqiren

还可以点击此处本站下载

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
js 代码集(学习js的朋友可以看下)
Jul 22 Javascript
判断控件是否已加载完成的代码
Feb 24 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
JS简单实现表格排序功能示例
Dec 20 Javascript
Vue中的无限加载vue-infinite-loading的方法
Apr 08 Javascript
vue mounted 调用两次的完美解决办法
Oct 29 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
Vue3配置axios跨域实现过程解析
Nov 25 Vue.js
vue-cli3环境变量与分环境打包的方法示例
Feb 18 #Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 #Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 #Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 #Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 #Javascript
深入理解vue-class-component源码阅读
Feb 18 #Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 #Javascript
You might like
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
自学python用什么系统好
2020/06/23 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
Python学习之os包使用教程详解
2022/03/21 Python