(全网最详细教程)深入探索 Vue 与 Axios:构建高效 Web 应用的关键技术

06-01 1041阅读

目录

一、Vue.js 介绍

Vue 具有以下特点:

二、Vue 入门程序

1. 引入 Vue

2. 代码解释

三、Vue 常用指令 - v-for

1. 遍历数组

2. 遍历对象

四、Vue 常用指令 - v-bind

1. 绑定单个属性

2. 绑定多个属性

五、Vue 常用指令 - v-if & v-show

1. v-if

2. v-show

3. 区别

六、Vue 常用指令 - v-model & v-on

1. v-model

2. v-on

七、Ajax 介绍

八、Ajax - Axios 入门

1. 引入 Axios

2. 代码解释

九、Axios - Axios 请求方式别名 & 案例

1. 请求方式别名

2. 案例

十、Axios - async/await

代码解释

十一、Axios 案例(Vue 生命周期)

代码解释


(全网最详细教程)深入探索 Vue 与 Axios:构建高效 Web 应用的关键技术

一、Vue.js 介绍

        Vue.js 是一款用于构建用户界面的渐进式 JavaScript 框架。它由尤雨溪开发,于 2014 年发布,旨在通过尽可能简单的 API 实现响应式数据绑定和组合的视图组件。通俗来讲,在传统的网页开发中,当数据发生变化时,我们需要手动去更新页面上显示的内容。而 Vue.js 采用了响应式的原理,只要数据改变了,与之绑定的页面元素就会自动更新,大大减少了我们手动操作 DOM 的工作量。

        Vue 的核心库只关注视图层,这意味着它主要负责处理页面上如何展示数据,而不涉及过多的业务逻辑。这种设计使得 Vue 不仅易于上手,对于初学者来说,很容易理解和掌握其基本用法;还便于与第三方库或既有项目整合。当项目逐渐变得复杂,需要引入更多功能时,我们可以轻松地将 Vue 与其他工具结合使用。同时,当与现代化的工具链以及各种支持类库结合使用时,Vue 也能为复杂的单页面应用提供驱动,满足大型项目的开发需求。

Vue 具有以下特点:

  • 响应式数据绑定:如前面所说,Vue 采用响应式原理,当数据发生变化时,与之绑定的 DOM 会自动更新。例如,我们在代码中定义了一个变量,这个变量显示在页面上,当我们改变这个变量的值时,页面上显示的内容会立刻更新,无需手动去修改页面元素。
  • 组件化开发:将页面拆分成多个小的、可复用的组件,提高代码的可维护性和复用性。就像搭积木一样,我们可以把一个大的页面拆分成多个小的组件,每个组件负责一个特定的功能。当我们需要在其他地方使用相同功能时,直接复用这个组件即可,避免了重复编写代码。
  • 轻量级:体积小,加载速度快,对性能影响较小。在如今追求快速响应的互联网时代,页面加载速度至关重要。Vue 的轻量级特性使得它在加载时不会给用户带来过多的等待时间。
  • 生态系统丰富:有大量的插件和工具,如 Vue Router、Vuex 等,可用于构建复杂的应用。这些插件和工具就像是 Vue 的 “武器库”,当我们需要实现路由管理、状态管理等功能时,直接从 “武器库” 中选取合适的工具即可。

    二、Vue 入门程序

    1. 引入 Vue

    可以通过 CDN 或 npm 引入 Vue。这里以 CDN 为例:

    
    
        
        
        Vue 入门
        
    
    
        
            {{ message }}
        
        
            var app = new Vue({
                el: '#app',
                data: {
                    message: 'Hello, Vue!'
                }
            })
        
    
    

    2. 代码解释

            在这个入门程序中,我们首先在  标签里通过  标签引入了 Vue 的 CDN 链接,这样浏览器就可以从指定的地址加载 Vue 库。

            在  标签里,有一个  元素,它的 id 是 app,里面使用了 {{ message }} 这样的插值表达式。这个表达式的作用是将 Vue 实例中 data 对象里的 message 属性的值显示在页面上。

            接下来是  标签里的 JavaScript 代码。我们创建了一个 Vue 实例,使用 new Vue() 这样的语法。在创建实例时,传入了一个对象,这个对象有两个重要的属性:

    • el:指定 Vue 实例挂载的 DOM 元素。这里的值是 #app,表示将这个 Vue 实例挂载到 id 为 app 的  元素上。也就是说,这个 Vue 实例会控制这个  元素及其子元素的显示和交互。
    • data:定义 Vue 实例的数据对象,其中的属性可以在模板中使用。在这个例子里,data 对象有一个 message 属性,值是 'Hello, Vue!',这个值会通过插值表达式显示在页面上。

      三、Vue 常用指令 - v-for

      v-for 指令用于基于一个数组或对象来渲染一个列表。

      1. 遍历数组

      
      
          
          
          v-for 遍历数组
          
      
      
          
              
      • {{ item }}
      new Vue({ el: '#app', data: { items: ['Apple', 'Banana', 'Cherry'] } })

              在这个例子中,我们有一个 items 数组,里面包含了三个水果名称。在 HTML 模板里,使用了 v-for 指令,v-for="item in items" 的意思是,对于 items 数组中的每一个元素,都会创建一个 

    •  元素。item 是一个临时变量,代表当前遍历到的数组元素。然后通过 {{ item }} 插值表达式将这个元素的值显示在 
    •  元素中。最终,页面上会显示一个包含三个列表项的无序列表,分别是 Apple、Banana 和 Cherry。

      2. 遍历对象

      
      
          
          
          v-for 遍历对象
          
      
      
          
              
      • {{ key }}: {{ value }}
      new Vue({ el: '#app', data: { user: { name: 'John', age: 30, city: 'New York' } } })

              当使用 v-for 遍历对象时,语法稍有不同。v-for="(value, key) in user" 表示对于 user 对象中的每一个属性,都会创建一个 

    •  元素。value 是属性的值,key 是属性的名称。在这个例子中,user 对象有三个属性,分别是 name、age 和 city。通过 {{ key }}: {{ value }} 插值表达式,会将属性名和属性值以 属性名: 属性值 的形式显示在 
    •  元素中。最终页面上会显示一个包含三个列表项的无序列表,分别是 name: John、age: 30 和 city: New York。

      四、Vue 常用指令 - v-bind

      v-bind 指令用于动态绑定 HTML 属性。可以缩写为 :。

      1. 绑定单个属性

      
      
          
          
          v-bind 绑定属性
          
      
      
          
              Vue Image
          
          
              new Vue({
                  el: '#app',
                  data: {
                      imageUrl: 'https://vuejs.org/images/logo.png'
                  }
              })
          
      
      

              在这个例子中,我们使用 v-bind 的缩写形式 : 来绑定  元素的 src 属性。imageUrl 是 Vue 实例 data 对象中的一个属性,它的值是一个图片的 URL。通过 :src="imageUrl",我们将 imageUrl 的值动态地赋给了 src 属性。这样,当 imageUrl 的值发生变化时,页面上显示的图片也会相应地改变。

      2. 绑定多个属性

      
      
          
          
          v-bind 绑定多个属性
          
      
      
          
              
          
          
              new Vue({
                  el: '#app',
                  data: {
                      divAttrs: {
                          id: 'myDiv',
                          class: 'myClass'
                      }
                  }
              })
          
      
      

              当需要绑定多个属性时,我们可以将这些属性放在一个对象中。在这个例子中,divAttrs 是一个对象,包含了 id 和 class 两个属性。通过 v-bind="divAttrs",我们将 divAttrs 对象中的所有属性都绑定到了  元素上。这样, 元素就会具有 id="myDiv" 和  的属性。

      五、Vue 常用指令 - v-if & v-show

      1. v-if

      v-if 是一个条件渲染指令,根据表达式的值来决定是否渲染元素。如果表达式的值为 false,元素将不会被渲染到 DOM 中。

      
      
          
          
          v-if 指令
          
      
      
          
              

      This is a message.

      Toggle Message new Vue({ el: '#app', data: { showMessage: true }, methods: { toggleMessage() { this.showMessage = !this.showMessage; } } })

              在这个例子中,p 标签使用了 v-if="showMessage" 指令。showMessage 是 Vue 实例 data 对象中的一个布尔值属性。当 showMessage 为 true 时,p 标签会被渲染到页面上;当 showMessage 为 false 时,p 标签不会出现在 DOM 中。页面上还有一个按钮,点击按钮会触发 toggleMessage 方法,这个方法会将 showMessage 的值取反,从而实现显示和隐藏消息的切换。

      2. v-show

      v-show 也是用于条件显示元素,但它只是通过 CSS 的 display 属性来控制元素的显示与隐藏,元素始终会被渲染到 DOM 中。

      
      
          
          
          v-show 指令
          
      
      
          
              

      This is a message.

      Toggle Message new Vue({ el: '#app', data: { showMessage: true }, methods: { toggleMessage() { this.showMessage = !this.showMessage; } } })

              这个例子和 v-if 的例子很相似,只是将 v-if 换成了 v-show。当 showMessage 为 true 时,p 标签会显示出来;当 showMessage 为 false 时,p 标签的 display 属性会被设置为 none,从而隐藏起来,但它仍然存在于 DOM 中。

      3. 区别

      • v-if 有更高的切换开销,因为它会真正地添加或移除元素。每次 v-if 的条件发生变化时,Vue 都需要重新创建或销毁元素,这涉及到 DOM 的操作,会消耗一定的性能。
      • v-show 有更高的初始渲染开销,因为元素始终存在于 DOM 中。在页面加载时,v-show 对应的元素就已经被渲染到 DOM 中,只是通过 CSS 来控制显示或隐藏。
      • 如果需要频繁切换显示状态,使用 v-show 更合适;如果在运行时条件很少改变,使用 v-if 更合适。例如,一个页面上的提示信息,可能会根据用户的操作频繁显示和隐藏,这时使用 v-show 更合适;而一个页面上的某个模块,只有在特定条件下才会显示,并且这个条件很少改变,使用 v-if 更合适。

        六、Vue 常用指令 - v-model & v-on

        1. v-model

        v-model 指令用于在表单元素(如 input、textarea、select)上创建双向数据绑定。

        
        
            
            
            v-model 指令
            
        
        
            
                
                

        {{ message }}

        new Vue({ el: '#app', data: { message: '' } })

                在这个例子中,input 标签使用了 v-model="message" 指令。message 是 Vue 实例 data 对象中的一个属性。当用户在 input 框中输入内容时,message 属性的值会自动更新;反过来,当 message 属性的值在代码中被修改时,input 框中的内容也会相应地改变。同时,通过 {{ message }} 插值表达式,message 的值会显示在 p 标签中,这样我们可以直观地看到数据的双向绑定效果。

        2. v-on

        v-on 指令用于监听 DOM 事件,可以缩写为 @。

        
        
            
            
            v-on 指令
            
        
        
            
                Say Hello
            
            
                new Vue({
                    el: '#app',
                    methods: {
                        sayHello() {
                            alert('Hello!');
                        }
                    }
                })
            
        
        

        在这个例子中,button 标签使用了 @click="sayHello" 指令,这是 von:click="sayHello" 的缩写形式。sayHello 是 Vue 实例 methods 对象中的一个方法。当用户点击按钮时,会触发 sayHello 方法,这个方法会弹出一个包含 Hello! 信息的提示框。

        七、Ajax 介绍

                Ajax(Asynchronous JavaScript and XML)即异步的 JavaScript 和 XML,是一种在不刷新整个页面的情况下,与服务器进行异步通信并更新部分网页的技术。在传统的网页交互中,当我们提交一个表单或者请求一些数据时,整个页面会重新加载,这会给用户带来不好的体验。而 Ajax 技术允许我们在后台与服务器进行少量数据交换,使网页实现异步更新。也就是说,我们可以在不重新加载整个网页的情况下,更新部分网页内容,比如在一个页面上动态加载新的文章列表、实时更新评论等。

                虽然名字中包含 XML,但现在更多地使用 JSON 作为数据交换格式。JSON 具有轻量级、易于解析和生成的特点,更适合在现代 Web 开发中使用。Ajax 的核心是 XMLHttpRequest 对象,它是浏览器提供的一个用于与服务器进行异步通信的 API。现代浏览器也支持使用 fetch API 来实现类似的功能。

        八、Ajax - Axios 入门

        Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它具有以下特点:

        • 支持 Promise API:可以使用 async/await 进行异步操作。Promise 是 JavaScript 中处理异步操作的一种机制,async/await 是基于 Promise 的语法糖,使用它们可以让异步代码看起来更像同步代码,提高代码的可读性和可维护性。
        • 拦截请求和响应:可以在请求发送前和响应返回后进行拦截处理。例如,我们可以在请求发送前添加一些请求头信息,或者在响应返回后对数据进行统一的处理。
        • 转换请求和响应数据:可以对请求和响应的数据进行转换。比如,我们可以将请求数据转换为 JSON 格式,或者将响应数据进行格式化处理。
        • 取消请求:可以取消请求。在某些情况下,比如用户快速切换页面,之前的请求可能就不需要了,这时可以使用 Axios 提供的取消请求功能。
        • 自动转换 JSON 数据:可以自动将响应数据转换为 JSON 格式。这样我们在处理响应数据时就不需要手动进行 JSON 解析了。

          1. 引入 Axios

          可以通过 CDN 或 npm 引入 Axios。这里以 CDN 为例:

          
          
              
              
              Axios 入门
              
          
          
              
                  axios.get('https://jsonplaceholder.typicode.com/todos/1')
                     .then(response => {
                          console.log(response.data);
                      })
                     .catch(error => {
                          console.error(error);
                      });
              
          
          

          2. 代码解释

                  在这个例子中,我们首先在  标签里通过  标签引入了 Axios 的 CDN 链接。然后在  标签里的  代码中,使用 axios.get 方法发送了一个 GET 请求,请求的地址是 https://jsonplaceholder.typicode.com/todos/1,这是一个公共的测试 API,会返回一个待办事项的数据。

                  axios.get 方法返回一个 Promise 对象,我们可以使用 then 方法来处理请求成功的响应,then 方法的回调函数接收一个 response 参数,response.data 就是服务器返回的数据。我们将这个数据打印到控制台。

                  如果请求过程中出现错误,会触发 catch 方法,catch 方法的回调函数接收一个 error 参数,我们将这个错误信息打印到控制台。

          九、Axios - Axios 请求方式别名 & 案例

          1. 请求方式别名

          Axios 提供了以下请求方式别名:

          • axios.request(config):这是一个通用的请求方法,可以通过配置对象来指定请求的方式、URL、数据等信息。
          • axios.get(url[, config]):用于发送 GET 请求,通常用于获取数据。
          • axios.delete(url[, config]):用于发送 DELETE 请求,通常用于删除服务器上的资源。
          • axios.head(url[, config]):用于发送 HEAD 请求,与 GET 请求类似,但只返回响应头,不返回响应体。
          • axios.options(url[, config]):用于发送 OPTIONS 请求,用于获取服务器支持的请求方法等信息。
          • axios.post(url[, data[, config]]):用于发送 POST 请求,通常用于向服务器提交数据。
          • axios.put(url[, data[, config]]):用于发送 PUT 请求,通常用于更新服务器上的资源。
          • axios.patch(url[, data[, config]]):用于发送 PATCH 请求,也是用于更新服务器上的资源,但与 PUT 不同的是,PATCH 通常只更新部分数据。

            2. 案例

            
            
                
                
                Axios 请求方式别名案例
                
            
            
                
                    // GET 请求
                    axios.get('https://jsonplaceholder.typicode.com/todos/1')
                       .then(response => {
                            console.log('GET 请求结果:', response.data);
                        })
                       .catch(error => {
                            console.error('GET 请求错误:', error);
                        });
                    // POST 请求
                    axios.post('https://jsonplaceholder.typicode.com/posts', {
                        title: 'foo',
                        body: 'bar',
                        userId: 1
                    })
                       .then(response => {
                            console.log('POST 请求结果:', response.data);
                        })
                       .catch(error => {
                            console.error('POST 请求错误:', error);
                        });
                
            
            

                    在这个案例中,我们分别使用了 axios.get 和 axios.post 方法发送了 GET 请求和 POST 请求。

                    GET 请求的目的是获取一个待办事项的数据,请求成功后,将响应数据打印到控制台;如果请求失败,将错误信息打印到控制台。

                    POST 请求的目的是向服务器提交一篇新的文章数据,我们在 axios.post 方法的第二个参数中传入了一个包含文章标题、内容和用户 ID 的对象。请求成功后,将响应数据打印到控制台;如果请求失败,将错误信息打印到控制台。

            十、Axios - async/await

            async/await 是 ES2017 引入的异步编程语法糖,它基于 Promise 实现,可以让异步代码看起来更像同步代码。

            
            
                
                
                Axios async/await
                
            
            
                
                    async function fetchData() {
                        try {
                            const response = await axios.get('https://jsonplaceholder.typicode.com/todos/1');
                            console.log('异步请求结果:', response.data);
                        } catch (error) {
                            console.error('异步请求错误:', error);
                        }
                    }
                    fetchData();
                
            
            

            代码解释

                    在这个例子中,我们定义了一个异步函数 fetchData,使用了 async 关键字。在异步函数内部,使用 await 关键字等待 axios.get 方法返回的 Promise 对象。await 会暂停函数的执行,直到 Promise 被解决(resolved)或被拒绝(rejected)。

                    当 Promise 被解决时,await 会返回 Promise 的结果,这里就是服务器返回的响应对象。我们将响应对象赋值给 response 变量,然后将响应数据打印到控制台。

                    如果 Promise 被拒绝,会抛出一个错误,我们使用 try...catch 语句来捕获这个错误,并将错误信息打印到控制台。

                    最后,我们调用了 fetchData 函数来执行异步请求。

            十一、Axios 案例(Vue 生命周期)

            
            
                
                
                Axios 案例(Vue 生命周期)
                
                
            
            
                
                    
            • {{ todo.title }}
            new Vue({ el: '#app', data: { todos: [] }, mounted() { this.fetchTodos(); }, methods: { async fetchTodos() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/todos'); this.todos = response.data; } catch (error) { console.error('请求错误:', error); } } } })

            代码解释

            在这个案例中,我们结合了 Vue 和 Axios 来实现一个动态加载待办事项列表的功能。

            首先,在  标签里引入了 Vue 和 Axios 的 CDN 链接。

            在  标签里,有一个 id 为 app 的  元素,里面有一个无序列表,使用 v-for 指令遍历 todos 数组,将每个待办事项的标题显示在列表项中。

            接下来是  标签里的 JavaScript 代码。我们创建了一个 Vue 实例,在这个实例中:

            • data 对象定义了一个 todos 数组,初始值为空。
            • mounted 是 Vue 的生命周期钩子函数,在实例挂载后调用。在这个钩子函数中,我们调用了 fetchTodos 方法。
            • methods 对象定义了 fetchTodos 方法,这是一个异步函数。在这个方法中,使用 await 关键字等待 axios.get 方法返回的 Promise 对象,当请求成功后,将服务器返回的待办事项数据赋值给 todos 数组。由于 Vue 的响应式原理,当 todos 数组的值发生变化时,页面上的列表会自动更新,显示新的待办事项列表。如果请求过程中出现错误,会捕获错误并将错误信息打印到控制台。

                      通过以上内容,你可以全面了解 Vue.js 和 Axios 的基本使用,从入门到实战,掌握如何构建交互式的前端应用。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码