初识 vue —— 最简单的前后端交互示例

news/2024/7/9 23:46:16 标签: vue

vue__0">一、学习 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 浏览器打开这个文件。下面是运行效果:

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

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

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

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

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

<pre class="prettyprint hljs xml"><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 框架,看来学习的路还很长。

共勉!


http://www.niftyadmin.cn/n/1301318.html

相关文章

微信小游戏的电量监听

在说小游戏的电量监听事件之前&#xff0c;我想先提一下小程序的电量监听事件。 在微信小程序中&#xff0c;是没有电量监听事件的&#xff0c;因为小程序没有全屏&#xff0c;手机端的电量和wifi等信息一直可以看得到&#xff0c;所以小程序里就没有这样的api了。 说回小游戏…

springboot2+springcloud2+euraka+fegin配置(1)

花了一天的时间踩了无数的坑&#xff0c;希望对大家有所帮助&#xff1a; 网上一大堆关于1.x版本的配置&#xff0c;这里自己可以看下别人文章&#xff0c;主要讲我遇到的升级版本的坑 1配置eurakaServer遇到的坑 maven引入参考官方的版本文档&#xff0c;与1.x版本有不同&am…

Vue v-if/v-show/插值表达式导致闪现的原因及解决办法

在开发过程中经常会发现当页面明明不应该出现的元素或内容会闪现一下然后消失&#xff0c;最近研究了一下这个问题的原因和解决办法&#xff0c;这里和大家分享一下。 1.闪现的原因 这个问题是因为Vue要等到HTML DOM加载完成后才会执行JS的编译&#xff0c;所以对使用的指令如…

CocosCreator设置自定义网页调试尺寸

CocosCreator的自定义尺寸 只有普通的几种&#xff0c;没有iphoneX这种新手机的尺寸&#xff0c;当然除了iphoneX&#xff0c;我们也可以自定义其他任意的尺寸。 现在我们以iphoneX为例&#xff1a; 在windows中&#xff1a; 我们右键CocosCreator图标&#xff0c;出现下图 …

springcloud2+gateway网关配置中心1(包含熔断,jwt认证,限流)

第一次我也问我老大为啥不用zuul,官网有现成的指导&#xff0c;老大一句话&#xff1a;gateway性能比zuul优化效率提升20%&#xff0c;zuul版本落后&#xff08;2x版本的code还是用的1x的源码&#xff09;&#xff0c;支持webflux&#xff0c;整合stream流&#xff1b;泪奔的我…

javascript的call方法简单总结

关于call这个方法大家应该都会用到过&#xff0c;我也一样&#xff0c;但是一直没有深入了解&#xff0c;今天学习的时候总结了call的两个主要用处&#xff1a; 1、继承 2、回调的时候设置回调方法的调用对象 继承 就是调用父类的构造方法&#xff0c;来进行初始化&#xf…

Vue与Element走过的坑。。。。带上Axios

1.Axios中post传参数组&#xff08;java后端接收数组&#xff09; 虽然源数据本身就是数组&#xff0c;但是传参时会自动变成key:数值或者服务器无法接收的对象&#xff0c;如下 如果不仔细看&#xff0c;很容易认为这两种情况没毛病。。&#xff08;后端不背锅&#xff0c;哈…

springcloud2+gateway网关配置中心2(包含熔断,jwt认证,限流)

下面介绍1未讲完的网关功能 1重试功能&#xff0c;配置如下 这里可以不写实现类&#xff0c;采用默认的方式配置&#xff0c;然后发送一个http的GET请求&#xff0c;试着断开服务端查看后台&#xff1a; 证明配置正确&#xff0c;起作用了&#xff01; 2Jwt拦截器过滤 直接配置…