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 相关文章推荐
深入理解JavaScript系列(6) 强大的原型和原型链
Jan 15 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
vue+Element-ui前端实现分页效果
Nov 15 Javascript
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
使用apache模块rewrite_module (转)
2007/02/14 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
简单易用的倒计时js代码
2014/08/04 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
python实现二维数组的对角线遍历
2019/03/02 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
Python sublime安装及配置过程详解
2020/06/29 Python
详解Python中的文件操作
2021/01/14 Python
学生就业推荐信
2013/11/13 职场文书
四风问题对照检查材料
2014/09/22 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
如何用python插入独创性声明
2021/03/31 Python
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
Python绘画好看的星空图
2022/03/17 Python