Vue

27 篇文章 3 订阅
12 篇文章 0 订阅

使用JQ 和 使用框架的区别

  • 数据和视图得分离,解耦(开放封闭原则 )
  • 以数据驱动视图,只关心数据变化,DOM 操作被封装

对MVVM的理解及三大要素

  • MVC

Vue 的三要素

  • 响应式:vue 如何监听到data 得每个属性变化?
  • 模板引擎:vue 的模板如何被解析,指令如何处理
  • 渲染:vue的模板如何被渲染成html?以及渲染过程

Vue中怎么实现响应式

  • 什么是响应式

    • 修改data 属性之后,vue 立刻监听到
    • data 属性被代理到 vm(this)上
  • Object.defineProperty

    var obj ={}
    var name = 'xzt'
    Object.defineProperty(obj,'name',{
        get : function  (){
            console.log(get)
            return name
        },
        set : function (val){
            console.log(set)
            name = val
        }
    })
    console.log(obj.name) //可以监听到
    obj.name = 'list'      //可以监听到    
    
  • Object.defineProperty

  • 模拟

vue 中如何解析模板

  • 模板是什么
    • 本质:字符串
    • 有逻辑,如v-if v-for,必须用JS 才能实现(图灵完备)
    • 转换为html 渲染页面,必须用JS 才能实现
    • 因此,模板最重要转换成一个JS函数(render)
  • render 函数
    • 模板中所有的信息都包含在render函数中
    • this 即vm
    • age 即 this.age 即 vm.age,即data 中的 price
    • _c 即this._c即vm._c
    • render 函数执行时返回vnode
    • updateComponent
  • render 函数 与 vdom

vue 得整个实现流程

  • 解析模板成render 函数
    • with的用法
    • 模板中的所有学习都被render 函数包含
    • 模板中用到的data 中的属性,都变成了js变量
    • 模板中的 v-model 都变成了js逻辑
    • render 返回 vnode
  • 响应式开始监听
    • Object.defineProperty
    • 将 data 代理到vm上
    • 监听到 get ,减少不必要得渲染
  • 首次渲染,显示页面,且绑定 依赖
    • 初次渲染,执行updateComponent,执行vm._render()
    • 执行render 函数,会访问到 vm.list 和vm.title
    • 会被响应式的get方法监听到
    • 执行updateComponent ,会走到vdom 和patch 方法
    • patch 将 vnode 渲染成DOM 初次渲染完成
  • data 属性变化,触发render
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值