Vue基础

Vue是什么?

Vue是一套用于构建用户界面的渐进式框架(由简到深)

官网https://v2.cn.vuejs.org/

Vue的核心:数据驱动

        也就是可以直接控制js数据,来改变页面(html)的内容

Vue的两大特征?

            1、数据驱动视图

               (1)用数据来更改页面效果

               (2)、数据的变化会驱动视图的根本更新

               (3)、好处:程序员只管把数据维护好,那么页面解构会被Vue自动渲染出来

        

           2、双向数据绑定

        

         (1)、在页面中,form表单负责采集数据,ajax负责题交数据

         (2)、js数据的变化,会被自动渲染到页面上

         (3)、页面上的表单采集的数据发生变化的时候,会被Vue自动获取到,并更新到js数据中

什么是MVVM?

        MVVM是Vue实现数据驱动视图双向绑定数据绑定的和核心原理

        M:模型(model)

        V:视图(View)

        VM:视图模型(view-model)

什么是Vue全家桶?  

        Vue全家桶一般来说指的是脚手架vue-cli、路由vue-Router、状态管理模式vuex、Axios、elementUI等ui框架和打包工具webpack。

基础代码:

 语法格式:

Vue配置项:

        Vue管理的函数,不能使用箭头函数

        el:

                两种写法:1、new Vue时配置el的属性

                                  2、先创建Vue实例,随后再通过 vm.$mout('#app')指定el的值

        data 存放数据

                  两种写法:1、函数式

                                     2、对象式

                    面试题:为啥data是一个函数

                           答:各个组件的实例拥有独立的作用域,data互补影响

     methods: 用来储存事件

     computed : 计算属相

                    面试题:computed 和 watch 有何区别?

                           答:computed要有缓存 watch没有

                                   computed 从现有的数据计算出新的数据   watch监听数据变化执行的handler回调函数

                                     computed多对一  watch一对多

      watch: 监听数据(deep 深度监听)

      filters:过滤数据

                      filters 里的this指向 是 window对象,所以说,在过滤器(filters里面进行this调用的时候)不会访问的data属性,methods以及所有可以this指向得到的数据,在filters里面都无法访问;

   

Vue组件的三部分:

        template-------组件的模板解构、

        script--------组件的JS行为

        style--------组件的样式

Vue指令  :

 插值语法 :
                  
     
  V-text :                    

         注释:

                        不可以把带有标签的字符串,渲染成真正的HTML内容        

                        v-text 和插值语法 {{ }} 类似但不相等

                        v-text 会覆盖内部原本内容

                  

 v-bind:

                       

 v-model:(双向数据绑定)

                 

v-on:(事件绑定)

        用来做事件绑定,一般写在Vue实例methods里面的方法,可以绑定为事件

        用法:v-on:触发事件='事件名/事件名( )' 简写:@触发事件='事件名/事件名()'

v-if(判断语句):

        当 if 里面的条件为真时,显示当前标签,如果不满足,标签不会渲染到页面上,也不会存在于 dom树 中

v-else-if v-else

v-show:

        

面试题: 什么情况下使用 v-if ? v-show?

      答:  理解需求,如果当前的内容确定不会改变的时候使用 v-if ,如果,当前的内容有多种情况会发生改变,使用 v-show

v-for:遍历数组的方法

        面试题v-if 和 v-for 为什么不建议一起使用

        答:        v-for和v-if不要在同一标签中使用,因为解析时先解析v-for再解析v-if。如果遇到需要同时使用时可以考虑写成计算属性的方式

生命周期:

                

 什么是生命周期? 

          生命周期就是vue实例从创建到销毁的全过程,也就是 new Vue() 开始就是vue生命周期的开始。Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom-->渲染、更新-->渲染、卸载 等一系列过程,称这是Vue的生命周期

生命周期的钩子函数:

        钩子函数是Vue生命周期中每个阶段对外开放让程序员操作Vue的接口。Vue有8个钩子函数。

                beforeCreate( ){ }  实例创建前

                因为此时vue实例还没有创建,那么就无法访问到 data 中的数据,并且 dom 视图也没有更新,所有的结构都停留在原始的状态

                create( ){ }   实例创建后

                这里是,最早能够调用 data 数据和 methods 方法的周期函数 ,此时,data 数据和 methods 方法已经可以调用,但是 dom 视图并没有更新

                beforeMount( ){ } 实例挂载前

                 在当前生命周期中,页面呈现的是原始 dom 结构,但是此时虚拟 dom 已经创建完成, 在 mounted 生命周期,会覆盖所有的 dom 所有的dom操作,均不奏效

                mounted( ){ } 实例挂载后

                在此周期之前的所有的dom操作,都不凑效,在这里可以做 dom 操作,并且所有的dom操作都能够展现出视图的变化

                beforeUpdata( ){ } 实例(试图)更新前

                在数据更新的时候触发;此时 data 数据是最新的,但是并没有更新到视图上,就是 数据视图内容不同步

                updated( ){ }  实例(试图)更新后

                数据更新后,此时数据是最新的,视图也是最新的,实现了数据 和 视图内容 双同步

                beforeDestroy( ){ }  实际销毁前

                实例销毁前,在这里是最后一次,能够访问的到 data 的数据和 methods 方法的生命周期

                destroyed( ){ }  实例销毁后

                实例销毁后,当触发了这个声明变量的时候,代表者,当前的vue实例已经被销毁的,所有的 data 数据 和 methods 方法,都不能用了

组件传参:

        父传子 在父组件中通过属性的方式向子组件传参  子组件中通过props接收参数

        子传父 在子组件中通过$emit调用父组件的自定义事件 在父组件的自定义事件中通过$event接收参数

        非父子关系:

        ref获取引用

        依赖注入:provide inject

        vuex

        vue2(选项options) envetBus传参;$parent父对象,$chilren子对象 $root根节点

        

Vue 路由钩子函数

        路由钩子的执行流程,钩子函数种类有:全局守卫、路由守卫、组件守卫。        

        完整的导航解析流程:

                1、导航被触发。

                2、在失活的组件里调用 beforeRouteLeave 守卫。

                3、调用全局的 beforeEach 守卫。

                4、在重用的组件调用 beforeRouteUpdate  守卫(2.2+)。

                5、在路由配置里面 beforeEnter。

                6、解析异步路由组件。

                7、在被激活的组件里调用 beforeRouteEnter。

                8、调用全局的 beforeResolve 守卫(2.5+)。

                9、导航被确认。

                10、调用全局的 afterEach 钩子。

                11、触发 DOM 更新。

                12、调用 beforeRouteEnter 守卫中传给next的回调函数,创建好的组件实例会作为回调函数的参数传入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值