new vue 方法参数_vue源码解析 <1> 数据驱动

f51e7d9eb6678fc6fa70793db353a91e.png

intro

Vue.js 一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据。

本文将介绍vue如何将模板和数据渲染成最终的 DOM。


实例

html

<div id="app">
  {
    { message }}
</div>

JavaScript

var app = new Vue({
    
  el: '#app',
  data: {
    
    message: 'Hello world!'
  }
})

最终展现是

Hello world


new Vue()

入口:src/core/instance/index.js

function Vue (options) {
    
  if (process.env.NODE_ENV !== 'production' &&
    !(this instanceof Vue)
  ) {
    
    warn('Vue is a constructor and should be called with the `new` keyword')
  }
  this._init(options)
}

initMixin(Vue)
stateMixin(Vue)
eventsMixin(Vue)
lifecycleMixin(Vue)
renderMixin(Vue)

可以看到new的过程调用了_init初始化操作。后边initMixin等函数是在vue的prototype上绑定了若干方法。这里使用es5的类写法,而非es6,这样的好处就是下边分类的Mixin方法可以灵活的在prototype上挂载分类的方法。

_init方法

Vue.prototype._init = function (options?: Object) {
    
    const vm: Component = this
    // a uid
    vm._uid = uid++

    let startTag, endTag
    /* istanbul ignore if */
    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
    
      startTag = `vue-perf-start:${
    vm._uid}`
      endTag = `vue-perf-end:${
    vm._uid}`
      mark(startTag)
    }

    // a flag to avoid this 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种流行的前端框架,它提供了双向数据绑定功能,这种绑定使得应用程序的数据和界面之间的交互更加简单,同时减少了手动更新DOM的需求。在Vue中,双向数据绑定的实现源码是非常重要的。 当我们使用双向数据绑定时,Vue会监听指定属性的变化,并且在属性发生变化时更新DOM。Vue使用Object.defineProperty()方法来检测属性的变化,当属性发生变化时,Vue会触发一个回调函数,这个回调函数会负责更新DOM。 在Vue中,双向数据绑定的实现源码是非常简洁而优雅的。当我们定义一个属性并在模板中使用时,Vue会自动创建一个Watcher对象,这个Watcher对象会在属性的值发生变化时被调用。当Watcher被调用时,Vue会执行一系列的操作,包括计算属性的值、调用指令函数等。 Vue的双向数据绑定还需要考虑到性能的问题。为了确保Vue应用程序的性能表现,Vue限制了双向绑定的次数。当一个Watcher对象被调用时,Vue会检测Watcher是否已经调用过一次,如果是,则忽略进一步的更新操作。这种限制保证了Vue应用程序的性能表现,但同时也保证了数据的正确性。 总之,Vue的双向数据绑定源码解析非常重要,它涵盖了Vue应用程序中最重要的功能之一。Vue的双向数据绑定源码简单而优雅,同时还需要考虑到性能的问题,这使得Vue在应用程序中具有非常高的性能表现和数据的正确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值