基于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 相关文章推荐
jquery中eq和get的区别与使用方法
Apr 14 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
May 10 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
Jul 07 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
JavaScript中七种流行的开源机器学习框架
Oct 11 Javascript
用vscode开发vue应用的方法步骤
May 06 Javascript
JavaScript编码小技巧分享
Sep 17 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
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
Python3实现从文件中读取指定行的方法
2015/05/22 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
django queryset相加和筛选教程
2020/05/18 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
优秀中学生事迹材料
2014/01/31 职场文书
捐款倡议书范文
2014/02/02 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
2014年幼师工作总结
2014/11/22 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技