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 相关文章推荐
ASP Json Parser修正版
Dec 06 Javascript
基于jquery 的一个progressbar widge
Oct 29 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
Nov 22 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 Javascript
typescript编写微信小程序创建项目的方法
Jan 29 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
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
python实现简单登陆系统
2018/10/18 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
高级运动鞋:GREATS
2019/07/19 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
博士研究生自我鉴定范文
2013/12/04 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
地球一小时宣传标语
2014/06/24 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
初中英语教学随笔
2015/08/15 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
严以律己学习心得体会
2016/01/13 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python