vue最简单的前后端交互示例详解


Posted in Javascript onOctober 11, 2018

一、学习 vue 面临的问题

最近想学一门前端技术防身,看到博客园中写 vue 的多,那就 vue 吧。都说 vue 的官方教程写得好,所以我就从官方教程开始学习。官方教程说“Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。”但是这个概念是个什么鬼?还是让人一头雾水嘛。而且我一开始也没有搞清楚 vue 的定位,只知道它是一个前端库,但是确实不知道它的优势是什么,还以为它是一个学会就能一劳永逸的万能的框架呢。官方教程一开始就讲怎么绑定页面上的元素和 JavaScript 中的数据,而且是双向绑定,自动更新,功能确实很强大。但是迟迟没有讲怎么和服务器端进行交互,怎么获取服务器端的数据。(后来经过反复阅读教程,才发现其实它一开始就说了“Vue 的核心库只关注视图层”,是我自己忽略了。)

二、最简单的前后段交互示例

吹再多的口水,也不如一个能运行的示例来得实在。这个例子也是从 vue 的官方教程中抄来的。首先,先建立一个 index.html 文件,编辑其内容,如下:

<!DOCTYPE html>
<html>
<head>
 <title>My first Vue app</title>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>
</head>
<body>
 <div id="watch-example">
  <p>
   Ask a yes/no question:
   <input v-model="question">
  </p>
  <p>{{ answer }}</p>
 </div>

 <script>
  var watchExampleVM = new Vue({
   el: '#watch-example',
   data: {
    question: '',
    answer: 'I cannot give you an answer until you ask a question!'
   },
   watch: {
    // 如果 question 发生改变,这个函数就会运行
    question: function (newQuestion, oldQuestion) {
     this.answer = 'Waiting for you to stop typing...'
     this.debouncedGetAnswer()
    }
   },
   created: function () {
    // `_.debounce` 是一个通过 Lodash 限制操作频率的函数。
    // 在这个例子中,我们希望限制访问 yesno.wtf/api 的频率
    // AJAX 请求直到用户输入完毕才会发出。想要了解更多关于
    // `_.debounce` 函数 (及其近亲 `_.throttle`) 的知识,
    // 请参考:https://lodash.com/docs#debounce
    this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
   },
   methods: {
    getAnswer: function () {
     if (this.question.indexOf('?') === -1) {
      this.answer = 'Questions usually contain a question mark. ;-)'
      return
     }
     this.answer = 'Thinking...'
     var vm = this
     axios.get('https://yesno.wtf/api')
      .then(function (response) {
       vm.answer = _.capitalize(response.data.answer)
      })
      .catch(function (error) {
       vm.answer = 'Error! Could not reach the API. ' + error
      })
    }
   }
  })
 </script>
</body>
</html>

然后使用 chromium 浏览器打开这个文件。下面是运行效果:

vue最简单的前后端交互示例详解

这里访问的后端是 https://yesno.wtf/api ,它传回的数据时 json 格式的,如果直接访问它,得到的结果如下:

vue最简单的前后端交互示例详解

https://yesno.wtf 这是一个神奇的网站,当你对某件事拿不定注意,需要别人推你一把时,可以访问它,它会随机返回一个 gif 动画,点头表示 yes,摇头表示 no,帮你做这个艰难的决定。直接访问 https://yesno.wtf ,注意在地址栏中不带 api 字样,可以得到这样的结果:

vue最简单的前后端交互示例详解 

三、从这个示例,我学到了什么

首先,解答了我前面的疑惑,那就是怎么和后端交互。在这个示例中,它使用 axios 库从 https://yesno.wtf/api 获取数据。同时,在这个例子中,它还使用 lodash 限制刷新频率。

其次,这个示例只有一个 html 文件,在这个文件中,使用

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>

引入需要的 vue.js、 axios.js 和 lodash.js,不需要下载安装一些有的没的东西,不需要学习在服务器端运行 JavaScript 的任何知识。本来嘛,我是准备学 .netcore 的,再让我学个 nodejs 我也觉得不科学嘛。

最后,我知道了学习 vue 不是单纯学习 vue,还要学习 axios.js 和服务器交互,真的要写个产品,还少不了漂亮的 UI 界面啥的,所以还要学习和 vue 配套的 UI 框架,看来学习的路还很长。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery模拟超链接点击效果代码
Apr 21 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
学习jQuey中的return false
Dec 18 Javascript
JavaScript数组实现数据结构中的队列与堆栈
May 26 Javascript
JavaScript生成带有缩进的表格代码
Jun 15 Javascript
轮播图组件js代码
Aug 08 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
原生JS实现贪吃蛇小游戏
Mar 09 Javascript
JavaScript中七种流行的开源机器学习框架
Oct 11 #Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 #Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 #Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
Oct 10 #Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 #Javascript
vue环形进度条组件实例应用
Oct 10 #Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 #Javascript
You might like
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
php微信公众号开发之简答题
2018/10/20 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
python的Template使用指南
2014/09/11 Python
python中__call__方法示例分析
2014/10/11 Python
python 的列表遍历删除实现代码
2020/04/12 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
一套软件测试笔试题
2014/07/25 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
宾馆安全管理制度
2015/08/06 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
Python使用DFA算法过滤内容敏感词
2022/04/22 Python