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 相关文章推荐
jQuery-onload让第一次页面加载时图片是淡入方式显示
May 23 Javascript
文本框input聚焦失焦样式实现代码
Oct 12 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
js漂浮广告实现代码
Aug 15 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 Javascript
微信小程序实现折线图的示例代码
Jun 07 Javascript
js实现无限瀑布流实例方法
Sep 16 Javascript
Vue——前端生成二维码的示例
Dec 19 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发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
php curl的深入解析
2013/06/02 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python mysqldb连接数据库
2009/03/16 Python
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
python爬取微信公众号文章
2018/08/31 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
Python包和模块的分发详细介绍
2020/06/19 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
初中生学习的自我评价
2013/11/14 职场文书
高中军训感言1000字
2014/03/01 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书