基于vue2框架的机器人自动回复mini-project实例代码


Posted in Javascript onJune 13, 2017

这是一个mini-project,主要是基于vue2.0的一个移动端的机器自动回复小项目,下面是我的一个回顾总结https://github.com/xuweikang/rebotChat

1. 项目搭建

在开始该项目之前,使用vue-cli脚手架搭建整个projec

//安装vue-cli
npm install vue-cli
//初始化项目 rebotChat是我的项目名称
vue init webpack-simple rebotChat

这样我的项目结构就出来了,如下:

基于vue2框架的机器人自动回复mini-project实例代码

2. 模拟数据,命名为mockdata.json,该数据包括用户基本信息数据和聊天记录,以后所有的对话都是模拟在该mock基础上的。

 3. 在build/dev.server.js中加入对模拟数据的所有mock 

//对所有的内容数据进行mock
let appData=require('../mockdata.json');
let dialogue=appData.dialogue;
//获得聊天内容 (如果聊天id参数不存在的话就获取所有)
router.get('/dialogue', (req, res) => {
 if(req.query.id){
  for(var i=0;i<dialogue.length;i++){
  if(req.query.id==dialogue[i].id){
    res.json({
     data:dialogue[i]
    })
   }
  }
 }else{
  res.json({
     data:appData.dialogue
    })
 }

})
//获得用户信息
router.get('/user', (req, res) => {
 res.json({
  data:appData.user
 })
}) 
//接入图灵机器人接口
router.get('/tulingapi', (req, res) => {
 let response=res
 let info = req.query.message
 let userid = req.query.id
 let key = '9857cf36b0bc4a48b8ba3f976e43a4cf'
 superagent.post('http://www.tuling123.com/openapi/api')
 .send({info, userid, key})
 .end((err,res) => {
  if(err){
   console.log(err)
  }
  response.json({
   data: res.text
  })
 })
})

 4. 创建api文件夹,将所有用到的api接口全部在api的js里面定义

import axios from 'axios';
var qs = require('qs');


var instance = axios.create({
  headers: {'content-type': 'application/x-www-form-urlencoded'}
});

let base = 'http://localhost:8080/api/';

//export const requestLogin = params => { return axios.post(`${base}/login`, params).then(res => res.data); };
export const getDialog = params => { return instance.get(base+'/dialogue',{ params: params }); };
export const getUser= params => { return instance.get(base+'/user',{ params: params }); };
export const getRebotContent = params => { return instance.get('http://www.tuling123.com/openapi/api',{ params: params }); }

5.到目前为止,整个项目的api接口都已经封装完毕,接下来是对各个组件的封装和数据接口的调用,我使用的是vuex的组件通信管理,将mock的数据作为全局供每个组件使用和修改。

6.路由的配置,在路由中将所有组件进行拼装组合,正确的显示在想要的页面,至此,项目基本完成。npm run dev后,浏览器显示效果:

基于vue2框架的机器人自动回复mini-project实例代码 

基于vue2框架的机器人自动回复mini-project实例代码

总结:

该开始vue组件通信一块,使用的是bus通信,发现到了后来代码越来越臃肿,而且有很多莫名其妙的小bug,就停住了继续的项目,在项目中加入了vuex,删除已有的bus,对组件进行了一次重新的规范,虽然重新规划通信花掉了一点时间,但是确是大大降低了代码的冗余,而且思路非常清晰,就觉得自己停止现有的方式去尝试另一种方式来完成一个任务的选择是正确的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
Apr 24 Javascript
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
javascript入门教程基础篇
Nov 16 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
JS实现Select的option上下移动的方法
Mar 01 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
May 22 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
Oct 28 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 #Javascript
深究AngularJS中$sce的使用
Jun 12 #Javascript
JS身份证信息验证正则表达式
Jun 12 #Javascript
用原生JS实现简单的多选框功能
Jun 12 #Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 #Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 #Javascript
AngularJS 异步解决实现方法
Jun 12 #Javascript
You might like
PHP计数器的实现代码
2013/06/08 PHP
php while循环控制的简单实例
2016/05/30 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
详细解读Python中的__init__()方法
2015/05/02 Python
python实现抖音视频批量下载
2018/06/20 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python实现LRU热点缓存及原理
2019/10/29 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
什么是封装
2013/03/26 面试题
汽车专业学生自我评价
2014/01/19 职场文书
研究生毕业鉴定
2014/01/29 职场文书
全神贯注教学反思
2014/02/03 职场文书
仓管员岗位职责
2015/02/03 职场文书
指导老师鉴定意见
2015/06/05 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
字节飞书面试promise.all实现示例
2022/06/16 Javascript