irpas技术客

vue2基础总结_专注认真努力_vue2

网络 1504

Vue2 API Vue2 guide 参考以上资料选择一些常用高频核心的Vue2知识进行总结归纳

1.基础

?创建vue实例 var vm = new Vue({选项对象}) ?html标签体插值{{xxx}} ,xxxx 会作为js 表达式解析 ?单向数据绑定data–>html:v-bind:href ="xxx" 或简写为:href ?双向数据绑定data<–>html:v-mode:value="xxx" 或简写为v-model="xxx" ?事件绑定:v-on:事件名="方法名"或简写为@事件名="方法名" ?访问vm的选项对象:vm.$选项对象名

2.选项对象 ?data 1.对象必须是纯粹的对象 (含有零个或多个的 key/value 对) 2.访问 vm.a 等价于访问 vm.$data.a(vm代理了 data 对象上所有的 property) 3.以 _ 或 $ 开头的 property 不会被 vm代理,以避免冲突,使用vm.$data._property访问 4.组件中data 必须声明为返回一个初始数据对象的函数,因为组件可以创建多个实例,必须调用 data 函数,返回初始数据的一个全新副本数据对象,而不是所有实例共享同一个数据对象 5.将 vm.$data 传入 JSON.parse(JSON.stringify(...)) 可以得到深拷贝的原始数据对象 ?props 1.props 可以是数组或对象,用于接收来自父组件的数据 2.对象允许配置高级选项,如类型检测、自定义验证和设置默认值 ?computed 1.{ [key: string]: Function | { get: Function, set: Function } } 2.计算属性的结果会被缓存,除非依赖的响应式 property 变化才会重新计算 3.计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例 ?methods 1.{ [key: string]: Function } 2.methods 将被混入到 Vue 实例中。可以直接通过 VM 实例访问这些方法,或者在指令表达式中使用。方法中的 this 自动绑定为 Vue 实例。 3.不应该使用箭头函数来定义 method 函数,箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例 ?watch 1.{ [key: string]: string | Function | Object | Array } 2.一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。 3.不应该使用箭头函数来定义 watcher 函数 ?el 1.string | Element 2.只在用 new 创建实例时生效 3.提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。可以是 CSS 选择器,也可以是一个 HTMLElement 实例。 4.在实例挂载之后,元素可以用 vm.$el 访问 ?mounted 1.Function 2.实例被挂载后调用,这时 el 被新创建的 vm.$el 替换 3.mounted 不会保证所有的子组件也都被挂载完成。如果你希望等到整个视图都渲染完毕再执行某些操作,可以在 mounted 内部使用 vm.$nextTick ?component 1.全局注册:Vue.component('component-name', { 选项对象 }),在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中 2.局部注册:

3.一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝 3.指令 1. v-text : 更新元素的textContent 2. v-html : 更新元素的innerHTML 3. v-if : 如果为true, 当前标签才会输出到页面 4. v-else: 如果为false, 当前标签才会输出到页面 5. v-show : 通过控制display 样式来控制显示/隐藏 6. v-for : 遍历数组/对象 7. v-on : 绑定事件监听, 一般简写为@ 8. v-bind : 绑定解析表达式, 可以省略v-bind 9. v-model : 双向数据绑定 10. v-cloak : 防止闪现, 与css 配合: [v-cloak] { display: none } 4.特殊attribute key

有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。

<ul> <li v-for="item in items" :key="item.id">...</li> </ul> ref

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例 当 v-for 用于元素或组件的时候,引用信息将是包含 DOM 节点或组件实例的数组

<!-- `vm.$refs.p` will be the DOM node --> <p ref="p">hello</p> <!-- `vm.$refs.child` will be the child component instance --> <child-component ref="child"></child-component> 5.组件间的数据流动 父–>子

父组件: 子组件:

子–>父/兄弟间

在全局Vue上的原型链上绑定实例vm,可以被所有组件“看到”,从而可以成为信息传输的中介

this.$bus.$on('数据id',this.事件方法)//事件方法 this.$bus.$emit('数据id',this.数据名)//数据方法 this.$bus.$off('数据id')//解绑事件数据

父组件: 子组件:

6.路由

1.安装路由插件:npm i vue-router@3 2.main.js中使用插件: 3.创建路由器router/index.js 4.修改App.vue 5.效果

7.axios 后台准备json接口:

1.controller层 2.全局跨域配置

@Configuration public class GlobalCorsConfig { /** * 允许跨域调用的过滤器 */ @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); //允许所有域名进行跨域调用 config.addAllowedOriginPattern("*"); //允许跨越发送cookie config.setAllowCredentials(true); //放行全部原始头信息 config.addAllowedHeader("*"); //允许所有请求方法跨域调用 config.addAllowedMethod("*"); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }

为什么会出现跨域问题? 前后端分离造成前后台服务的端口号不同,在这里前台是8080,而后台是8081 3.测试接口

前端axios请求接口数据:

1.项目导入axios npm install axios --save 2.组件中简单使用axios: 3.结果


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Vue2 #APIVue2 #var #vm