与机器人愉快的聊天~~~

通过vue.js完成聊天

  • 机器人接口
    在这里插入图片描述
  • css代码

 /**重置标签默认样式*/
    * {
      margin: 0;
      padding: 0;
      list-style: none;
      font-family: '微软雅黑';
    }

    #container {
      width: 450px;
      height: 780px;
      background: #eee;
      margin: 20px 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: 275px;
      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;
    }
  • html代码
 <div id="container">
    <div class="header">
      <span style="float: left;">机器人</span>
      <span style="float: right;"></span>
    </div>
    <ul class="content">
      <!-- 自己 右边 -->
      <li>
        <img src="./img/right.png" class="imgright" /><span class="spanright">你好吗?</span>
      </li>
      <!-- 机器人 左边 -->
      <li>
        <img src="./img/left.png" class="imgleft" /><span class="spanleft">不好</span>
      </li>
      <!-- 渲染部分 -->
      <!-- 给属性添加绑定事件 v-bind: 简写直接冒号:即可 
      判断是否是自己发送的内容 isMe=true 自己发的 isMe=false 机器人发的
      这里图片自己选择喜欢的图片导入即可-->
      <li v-for='item in list'>
        <!-- 遍历中的isMe 要用item点出来 -->
        <img :src="item.isMe?'./img/right.png':'./img/left.png'" :class="item.isMe?'imgright':'imgleft'" /><span :class="item.isMe?'spanright':'spanleft'">{{item.text}}</span>
        <!-- 发送的内容设置为text 遍历中用item点出来 -->
      </li>
    </ul>
    <div class="footer">
      <div id="user_face_icon">
        <img src="./img/right.png" alt="" />
      </div>
      <!-- 通过v-model与msg实现数据双向绑定 修饰符.trim 去除首尾空格
      通过@keyup 键盘弹起 并且修饰符.enter 回车或者点击发送按钮触发send()方法-->
      <input id="text" type="text" placeholder="说点什么吧..." v-model.trim='msg' @keyup.enter='send()' />
      <span id="btn" @click='send()'>发送</span>
    </div>
  </div>
  • js代码
<!-- 开发环境版本,包含了有帮助的命令行警告 jquery.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- jQuery -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
<script>
  var app = new Vue({
    el: '#container',
    data: {
      msg: '',
      // 聊天内容都放在数组中
      list:[]

    },
    methods: {
      send(){
        //发送的文本不能为空
        if(this.msg==''){
          alert('不能为空');
          // return 让后面代码不在执行
          return;
        }
        this.list.push({
          text:this.msg,
          isMe:true,
        });
        //清空文本框内容
        this.msg=''
        //自己发送后 发送ajax请求让机器人回复
        $.ajax({
          type:'post',
          url:'http://www.tuling123.com/openapi/api',
          data:{
            //注意 测试用 key:如果次数都用完了建议自己注册一个机器人即可,免费的
            //智能机器人接口,使用需要注册,官网地址是 http://www.turingapi.com/
            key:'9fbb98effab142c9bb324f804be542ba',
            // info自己发送的内容
            info:this.msg
          },
          success:backData=>{
            console.log(backData);
            //把机器人的回复添加到list数组中
            this.list.push({
              text:backData.text,
              isMe:false
            });
          }
        })
      }
    },
    //钩子函数 
    //updated函数 就是数据更新后才执行
    updated() {
      // 确保数据更新完成后执行滚动条滚动底部
      $('.content').scrollTop(99999)
    },
  })
</script>
内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值