Vue简单介绍以及常用方法总结

本文介绍了Vue.js框架的基本概念,包括其轻量级的设计理念、易于学习的特点及与React和Angular等框架的区别。同时,详细列举了Vue的常用指令,如v-bind、v-on等,并解释了过滤器、计算属性和watch的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 Vue.js 是什么?

这里写图片描述

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
简单的 API 实现响应的数据绑定和组合的视图组件。

二、与其他框架对比

React 和 Vue

相似之处:

  1. 使用 Virtual DOM

    1. 提供了响应式(Reactive)和组件化(Composable)的视图组件。

    2. 将注意力集中保持在核心库,伴随于此,有配套的路由和负责处理全 局状态管理的库。

Angular 和 Vue

  1. vue 的一些语法和 Angular 的很相似(例如 v-if vs ng-if)。因为 Angular 是 Vue 早期开发的灵感来源。然而,Angular 中存在的许多问题,在 Vue 中已经得到解决。

  2. Vue1.x版本可以认为就是简单的ng ,没有了controller的概念,直接通过el绑定视图模块

  3. Vue2.x版本(当前版本)1、更好的性能;2、组件化

三、vue的常用指令



1、 v-xxx
2、属性绑定v-bind  缩写  ‘:’
<a v-bind:href="url"></a>   给标签绑定属性 :属性名 =" 属性值";
<!-- 缩写 -->
<a :href="url"></a>
3、事件绑定 v-on  缩写 ‘@’
<a v-on:click="doSomething"></a> 给标签绑定事件 @事件名 = " 方法名()";
<!-- 缩写 -->
<a @click="doSomething"></a>
4、v-mode => mvvm (model=> view  view=>model)  实现数据和视图的双向绑定
5、v-for   <li v-for="(ele,index) in listdata" key="index">
 for in 循环 
6、v-text ="val" 渲染数据 渲染的速度比{{val}} 这种方式要快,可以提高用户体验;
7、v-cloak 给标签加上  <p v-cloak>{{val}}</p> 
 配合样式  [v-cloak]{display:none}  也可以达到 v-text 的效果;初始加载页面时使之不显示;
8、v-html 安全数据绑定,可以解析html 标签
9、v-pre 不会解析数据(使用较少)
10、v-show 是否显示(配合样式 display:none)
11、v-if 判断是否生成标签 效果同v-show 相同 但实现原理不同,v-if 实现显示或隐藏的效果慢与v-show

四、过滤器

//全局定义
Vue.filter('reverseMsg',function(value){
    return value.split('').reverse().join('');
});

new Vue({
    el:"#box",
    data:{
        message:"msg"
    },
    filters:{
  //局部定义
        reverseMsg:function(value){
            return value.split('').reverse().join('')+"2";
        }
    }
})

计算属性

new Vue({
    el:"#box",
    data:{
        message:"msg"
    },
    computed: {
fullName: function () {
    return this.firstName + ' ' + this.lastName
}
}
})

watch( 一般执行异步操作或开销较大的操作)

new Vue({
    el:"#box",
    data:{
        message:"msg"
    },
    watch: {
firstName: function (val) {
  this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
  this.fullName = this.firstName + ' ' + val
}
       }
})

vue-resource(支持 jsonp)

// 基于全局Vue对象使用http
Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);

Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

// 在一个Vue实例内使用$http
this.$http.get('/someUrl', [options]).then(successCallback, errorCallback).catch(e=>console.log(e));

this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
vue常用方法总结 第一章 Vue核心知识讲解 5 第二节 引包、留坑、实例化 、插值表达式{{}} 5 1. 引包 5 2. 留坑 5 3. 实例化 5 4. 插值表达式{{ }} 5 第三节 熟悉及使用常用指令 5 1. 什么是指令 5 2. 常用的指令有哪些,及怎么使用这些指令 6 第四节 阐述vue单双向数据流及事件绑定 6 1. vue单向数据流绑定属性值 v-bind: (属性) 简写 :(属性) 6 2. vue双向数据流 v-model 只作用于有value属性的元素 7 3. 事件绑定v-on:事件名="表达式||函数名" 简写 @事件名="表达式||函数名" 8 4. 总结 8 第五节 过滤器 8 1、过滤器有全局过滤器和组件内的过滤器 应用 {{ msg | 过滤器名}} 8 2、 vue中的this是vue封装好给我们使用的,跟平常方法里面的this是不同的 9 第六节 数据监听watch(深度监听)计算属性computed 9 watch监听单个,computed监听多个 9 总结: 10 第二章 组件化开发知识介绍 11 第一节 组件化开发 11 1、 创建组件的两种方式 11 局部声明 11 2、组件类型(组件开发三步曲:声明、注册、使用 ) 11 第二节 slot插槽和ref、$parent (重点) 11 1、slot插槽 11 2、ref获取子组件实例 12 第三节 父子组件的通信 (核心) 13 1、父传子 14 2、子传父 14 第四节 非父子组件之间的通信 14 简介:建立Bus总线机制实施非父子组件通讯 14 3、回调函数写法 16 第五节 vue的生命周期 17 1、需要频繁的创建和销毁组件 17 2、组件缓存 17 3、成对比较 17 第三章 Vue核心插件之路由模块 18 第一节 路由的跳转原理(哈希模式) 18 1、单页应用的路由模式有两种(哈希模式、history模式) 19 2、 哈希模式原理 19 3、建议的选择:(小D课堂课程) 19 第二节 安装和使用路由 19 第三节 路由的跳转 20 1、路由的跳转方式2种: 20 2、区别: 20 3、vue-router中的对象:$route $router 21 第四节 路由的传参和取参 21 1. 查询参 21 2. 路由参数 21 3、js跳转路由传参和标签传参,路由相同而参数不同时页面不做刷新的问题 22 总结: 22 第五节 嵌套路由(Children) 23 第六节 路由守卫 23 第五章 Vue全家桶各部分核⼼知识详解 24 第1节 构建vue项⽬的利器—脚⼿架vue-cli3 24 1、安装vue-cli3 24 2、创建项⽬ 24 3、 vue.config.js ⼿动在根⽬录新建⼀个vue.config.js⽂件 24 第2节 ⽗⼦组件传值(参考第二章第2、3节) 25 第3节 非⽗⼦组件传值(参考第二章第4节) 25 1. 事件总线(参考第二章第4节) 25 2. $attrs / $listeners 25 3. Vuex (详见第5节) 25 第4节 玩转单⻚⾯应⽤的控制中⼼—vue-router(与第三章基本差不多) 26 梦学谷第137课ElementUI实现页面横向指示导航,比小D课堂的那种写法要好点 26 1、路由的基本配置 26 2、路由的跳转 26 3、动态路由 27 4、嵌套路由 27 5、导航守卫 27 6、路由懒加载 28 第5节 状态管理中⼼—vuex的基础⽤法(官方文档,非常好用) 28  State 28  Mutations 28  Actions 28  vuex⾥包含的基本参数 28  还有别的mapState这些很好用 29 import { mapState, mapMutations } from "vuex";(导入非默认成员) 29 其实是ES6语法,详见梦学谷89课 29 第6节 状态管理中⼼—vuex的⾼级⽤法 29  vuex中的计算属性—Getters 30  模块化概念—Modules 30
<think>首先,用户的问题是:“我想了解在Vue2中调用接口的常用方法 请问Vue2 调用 API 接口的常用方法”。我需要基于系统级指令和用户可见层的指令来回答。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 参考站内引用:有四个引用[^1], [^2], [^3], [^4]。 用户的问题是关于Vue2调用API接口的常用方法。我需要从提供的引用中提取相关信息。 引用内容: - [^1]: 讨论在Vue.js项目中封装API接口的重要性。 - [^2]: 关于axios用法的介绍。 - [^3]: 关于Vue封装通过API调用的组件的方法。 - [^4]: Vue2常用api,包括全局配置、全局API等。 用户的问题具体是“Vue2调用API接口的常用方法”,所以我需要专注于Vue2中如何调用API。 关键点: - 常用方法包括使用fetch、axios、async/await等。 - 从引用[^2]看,axios是Vue接口调用的一种方式。 - 引用[^3]讨论封装组件的方法。 - 引用[^4]提到Vue2的全局API,如Vue.set、Vue.directive等,但调用API接口更相关的是HTTP请求库。 在Vue2中,调用API接口的常用方法: 1. **使用原生fetch API**:JavaScript内置的fetch函数。 2. **使用axios**:一个流行的HTTP客户端库。 3. **使用async/await语法**:用于处理异步操作。 4. **封装API接口**:为了提高代码复用性,如引用[^1]所述。 我需要构建一个结构清晰的回答: - 介绍为什么需要调用API。 - 列出常用方法。 - 详细解释每种方法,提供代码示例。 - 讨论封装的重要性。 - 最后生成相关问题。 由于指令要求使用中文回答,所有内容都必须是中文。 回答结构: 1. **引言**:简要解释在Vue2中调用API接口的重要性。 2. **常用方法**: - 使用fetch API - 使用axios - 使用async/await - 封装API接口 3. **代码示例**:提供每种方法简单代码示例。 4. **封装建议**:基于引用[^1]和[^3],讨论如何封装API调用。 5. **相关问题**:生成几个相关问题。 引用标识:在回答中引用段落时,自然地添加[^1], [^2]等。例如,如果提到封装的重要性,引用[^1]。 数学表达式:用户问题不涉及数学,所以我可能不需要使用$...$或$$...$$。但如果提到任何公式,我会使用。但在这个上下文中,可能不需要。 现在,生成相关问题: - 指令6:生成相关问题。 - 例如:1. Vue2中如何优化API调用?2. 如何处理API调用的错误?3. Vue2与Vue3在API调用上的区别? 确保回答真实可靠:基于提供的引用和一般知识。 最终回答大纲: - 开头:直接回答用户问题。 - 主体: - 方法1:fetch API - 方法2:axios - 方法3:async/await - 封装API - 结尾:总结和建议。 - 相关问题。</think>### Vue2 调用 API 接口的常用方法Vue2 项目中,调用 API 接口是前后端分离架构的核心环节,用于从服务器获取数据、提交表单或执行其他异步操作。合理选择调用方法能提升代码可维护性、减少错误率,并优化性能[^1]。以下是 Vue2 中调用 API 接口的常用方法,我将逐步解释每种方法,并提供代码示例和实际应用建议。这些方法基于 Vue2 的响应式特性,结合 JavaScript 的异步处理机制实现。 #### 1. **使用原生 fetch API** fetch 是 JavaScript 内置的 HTTP 请求方法,无需额外安装库,适合简单场景。 - **优点**:轻量级、浏览器原生支持。 - **缺点**:需手动处理错误和响应解析,不支持请求拦截等高级功能。 - **示例代码**: ```javascript // 在 Vue2 组件方法中调用 methods: { fetchData() { fetch('https://api.example.com/data') .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.json(); // 解析 JSON 数据 }) .then(data => { this.data = data; // 更新 Vue 响应式数据 }) .catch(error => { console.error('Fetch error:', error); }); } } ``` - **应用场景**:小型项目或快速原型开发,其中 API 调用逻辑简单。 #### 2. **使用 axios 库** axios 是 Vue2 中最流行的 HTTP 客户端库,提供丰富的功能如请求拦截、自动转换 JSON 等[^2]。 - **优点**:支持 Promise、错误处理完善、易于集成中间件。 - **缺点**:需额外安装依赖(`npm install axios`)。 - **示例代码**: ```javascript // 安装 axios: npm install axios import axios from 'axios'; // 在 Vue2 组件中调用 methods: { async getData() { try { const response = await axios.get('https://api.example.com/data'); this.data = response.data; // 直接获取响应数据 } catch (error) { console.error('Axios error:', error.response?.data || error.message); } } } ``` - **封装建议**:为提高复用性,可在 `src/api` 目录下创建 axios 实例并封装通用方法(如设置 baseURL、添加请求头)[^1][^3]。例如: ```javascript // src/api/index.js import axios from 'axios'; const apiClient = axios.create({ baseURL: 'https://api.example.com', timeout: 5000, headers: { 'Content-Type': 'application/json' } }); export default { getData() { return apiClient.get('/data'); } }; // 组件中调用: import api from '@/api'; api.getData().then(...) ``` #### 3. **使用 async/await 语法** async/await 是处理异步操作的现代语法,常与 axios 或 fetch 结合,使代码更易读[^2]。 - **优点**:避免回调地狱(Callback Hell),代码结构清晰。 - **缺点**:需 ES2017+ 支持,在旧浏览器中可能需要 polyfill。 - **示例代码**: ```javascript methods: { async loadUserData() { try { const response = await axios.get('https://api.example.com/users'); this.users = response.data; } catch (error) { this.error = 'Failed to load data'; } } } ``` - **最佳实践**:在 Vue2 的 `created` 或 `mounted` 生命周期钩子中调用异步方法,确保组件渲染后执行请求。 #### 4. **封装 API 接口** 封装 API 调用是 Vue2 项目的推荐做法,将接口逻辑集中管理,提升可维护性[^1][^3]。 - **步骤**: 1. 创建独立 API 模块(如 `api.js`)。 2. 封装所有请求方法,返回 Promise。 3. 在组件中导入并调用。 - **示例封装**: ```javascript // src/services/api.js import axios from 'axios'; const api = axios.create({ baseURL: 'https://api.example.com' }); export const fetchPosts = () => api.get('/posts'); export const createPost = (postData) => api.post('/posts', postData); // 在 Vue2 组件中使用 import { fetchPosts } from '@/services/api'; export default { data() { return { posts: [] }; }, async created() { this.posts = await fetchPosts(); } }; ``` - **好处**:减少代码重复、便于统一处理错误和加载状态,符合 Vue2 的组件化思想[^3]。 #### 总结与建议 - **核心原则**:优先使用 axios + async/await 组合,因其稳定性和功能丰富性[^2]。对于小型项目,fetch 也是可行选择。 - **错误处理**:在所有方法中添加 `try/catch` 块,捕获网络错误或服务器响应异常。 - **性能优化**:结合 Vue2 的 `Vue.set` 或 `Vue.nextTick` 确保数据更新触发视图渲染[^4]。 - **安全考虑**:在封装时添加身份验证头(如 JWT),避免敏感数据泄露。 通过以上方法,您可以高效地在 Vue2 项目中调用 API 接口。如果需要深入特定场景(如文件上传或 WebSocket),可参考 Vue2 官方文档或扩展库(如 Vue Resource)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值