表达式:
- 使用前要先引入文件vue.js;
- 要创建vue实例对象,工厂模式的应用el/element、data/object、metnods、computed、watch
- el作用的范围:全局vue实例;
- 差值表达式{{ }} 简单数据类型simple data type(string、number、boolean)、复杂数据类型complex(array、object、function);
常用指令:
- v-on、简写 @ :事件绑定;
- v-bind 简写 :属性绑定;
- v-model :双向数据绑定(适用于input、select、textarea);
- v-html:渲染html内容;
- v-text:纯文本输出;
- v-once:一次渲染,可以帮助提升页面性能;
- vue中所包含的事件,大多数都与原生类似,任何事件都会传递一个对象,该对象时event,需要注意它的形参及实参实参可以是event/$event;
- 阻止默认事件 :return false、event.preventDefault
- 阻止事件冒泡:event.stopPropagation();/event.cancleBubble = true;
- vue中事件的修饰符:stop、prevent、space、enter、del;
- vue在html中进行事件的绑定:1.代码清晰 2.无需手动绑定 3.对象删除,方法自动销毁;
- DOM:三目运算、变量显示、方法调用、属性计算、对象监控;
vue中的样式:
- class:v-bind:class进行动态样式绑定(可以绑定object-->键名是类名,键值是布尔值,也可以绑定data设置)
- style:v-bind:style进行动态样式绑定(驼峰式写法 、json object -->js object)普通样式“”引入,多样式数组处理
语法:
- v-if(templete模板应用,忽略templete标签的应用)、v-else-if、v-else、v-show、v-for(1.数组【元素、下标】2.对象 【键名、键值、下标】3.:key 作用-->唯一值/在虚拟DOM中能够快速找到该对象/性能的提升);
vue实例对象的生命周期(lifecycle):
- beforeCreate/created-->beforeMount/mounted-->beforeUpdate/updated-->beforeDestroy/dastroyed;
vue组件化开发:
- 将data全局化,并且设置为vue的data属性,会发现全局的data与this.$data相等;
- 可以设置ref(reference)本地参考对象,类似于id的操作;
- 先实例化一个vue对象,里面设置templete内容这时候是没有加载到dom上的,通过$mount实现对象的加载操 作,加载到指定元素上。
- 要实现代码的高度重用,需要考虑到temponent组件化开发,可以通过Vue.component实现全局组件的注册操 作,(注意:需要在vue实例化之前定义)。
vue的CLI(commond line interface 命令行接口):
- 全局安装vue-cli命令: npm i vue-cli -g;
- 创建一个vue项目命令: vue init webpack-simple(要使用的vue templete) vueProjectName(项目名称)
- 运行vue项目命令:npm run dev
- 打包文件命令:npm run build
vue项目目录结构:
- src:assert-->静态资源目录、Vue.app-->主组件、main.js-->入口文件;
- .babelrc:语法转换配置文件(es6、7转es5);
- indel.html:主页面;
- package.json:依赖配置文件;
- webpack.config.js:webpack配置文件(1.入口配置 2.出口设置 3.加载器使用【sass-loader、less-loader、vue-loader、
- css-loader、style-loader、file-loader、...】 4.外部插件管理);
vue组件关系:
父与子:1.父组件绑定属性(String、Number、Array、Object、Function...)
2.子组件属性接收(props进行接收 array/object);
子与父:回调模式-->1.父组件绑定函数 ;
2.子组件接收并触发函数;
3.传递参数到父组件的函数中 ;
4.再由父组件进行data修改;
emit模式-->1.子组件中进行$emit数据发射;
2.父组件进行事件的监听,并接收event事件对象的内容 ;
3.通过event事件对象内容修改data数据;
非父子:公交总线模式-->1.创建一个vue实例,并且该实例与原vue实例处于同级并列关系 ;
2.那么所有组件与该实例就处于上下级关系 ;
3.在某组件中进行$emit事件发射,发射到bus总线的vue实例中去 ;
4.想要接收并操作数据的组件进行事件的监听,并接收event事件对象;
vue中slot插槽:
- slot可以将标签中的内容进行插槽式显示;
- 也可以利用slot name的方式指定显示slot的内容;
- 如果不给slot定义name,那么就是默认的slot显示;
- 也可以在子组件中定义slot的默认值,如果父组件有传值,那么就显示传递值,否则就显示slot默认值;
- component可以实现动态组件加载;绑定属性是: is;
- 可以利用keep-alive将加载的组件保持状态;
- 组建的钩子函数新增 activated/deactivated;
vue动画:
- css动画:transition(transition、animation)、appear、type、mode(in-out、out-in)、animate.css(库)、transition-group;
- js动画:不是钩子函数,而是事件绑定、el、done;
vue指令:
Vue.directive(directives)、指令的钩子函数-->bind(el、binding、vnode、oldVnode)、inserted、bindUpdate、 updated、unbind;
vue过滤:
Vue.filter:
- 第一个参数是过滤的对象;
- 第二个参数才是函数中的第一个参数;
- 通过 | (管道符)进行连接;
- 可以多个过滤进行操作,但需要注意数据的类型;
filters-->mixins-->代码的混入操作;
vue中的http:
- fetch:1. get 2.post(headers;数据一般是字符串,不是对象) 3.put 4.delete ;
- vue-axios: 1.原理:axios 2.利用vue对axios进行二次封装 3.先安装,再引入,后使用;
vue中的表单:
- v-model:v-bind+v-on ;
- textarea:style ,white-space:pre (换行)
- 自定义组件:v-model(子组件中接收props:['value'];;子组件向父组件中传递this.$emit('input',value);)
vue中的路由:
- vue中路由设置流程:1.模块安装 2.路由配置 3.入口文件修改 4.路由模块引入 5.静态路由表引入 6.实例化路由模块 7.实例 化vue对象并将路由对象引入进去 8.设置route-view进行占位;
- 路由的激活状态:actice-class(当前激活)、exact(确切的,准确跳转、高亮) ;
- 路由的嵌套:childern ;
- 通过字符串拼接可以实现route-link的跳转;
- 通过路由中的name设置,也可以实现路由的跳转;
- 类似于slot的name,在路由中可以将conponent转成components,也就是多个路由模块的设置(router-view中就可以利用 name进行指定模块的显示);
- 重定向:-->redirect *是模糊重定向;
- 路由的动画处理:transition;
- 路由的滚动行为:scrollBehavior 、和锚点是关系的;
- 路由的钩子函数:
- 在组件中设置路由的钩子函数 -->beforeRouteEnter/beforeRouteLeave;
- 在路由中设置路由的钩子函数-->beforeEnter/beforeLeave 不要写route,因为已经在route中;
- 在main.js中设置路由的钩子函数-->router.beforeEach 全局所有路由的监控;
路由的懒加载:
resolve、require、ensure、
将所有模块定义成整体模块进行模块的懒加载。