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 相关文章推荐
使用正则替换变量
May 05 Javascript
php gethostbyname获取域名ip地址函数详解
Jan 24 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
js实现坦克大战游戏
Feb 24 Javascript
小程序富文本提取图片可放大缩小
May 26 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
php测试kafka项目示例
2020/02/06 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
Python判断telnet通不通的实例
2019/01/26 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
全球度假村:Club Med
2017/11/27 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
中专自荐信
2013/10/13 职场文书
外企财务年会演讲稿
2014/01/03 职场文书
初中语文教学反思
2014/02/02 职场文书
生产部岗位职责范文
2014/02/07 职场文书
聘任书的格式及模板
2019/10/28 职场文书
nginx rewrite功能使用场景分析
2022/05/30 Servers