美文网首页
vue模板实现3-数据绑定

vue模板实现3-数据绑定

作者: 恒星的背影 | 来源:发表于2018-05-09 08:20 被阅读0次

这次的改进加入了数据绑定,即更改数据时,视图同步更新。使用了 Object.defineProperty() 方法,每次 set 的时候,将整个视图重新遍历。这种方式很低效,后续会继续改进。

const handleStr = (str, data) => {               // 
  const reg = /{{\w+}}/g
  const arr = str.match(reg) || []

  arr.forEach((item)=>{
    const key = item.slice(2, -2)
    
    if(data[key] === undefined) {
      str = str.replace(item, '')
      console.error(`[vue warn] ${key} is undefined`)
    }
    else {
      str = str.replace(item, data[key])
    }
  })
  
  return str
}

const traverse = (node, data) => {                    // 遍历
  node.childNodes.forEach(item => {
    if(item.nodeName === '#text'){
      item.textContent = handleStr(item.textContent, data)
    }
    else {
      traverse(item, data)
    }
  });
}

class Vue {
  constructor(obj) {
    const {el, data} = obj
    const node = document.querySelector(el)

    this.data = data

    const nodeCopy = node.cloneNode(true)

    traverse(node, data)

    for(let key in data) {
      let value = data[key]
      Object.defineProperty(data, key, {
        get() {
          return value
        },
        set(v) {
          value = v
          const copy = nodeCopy.cloneNode(true)
          traverse(copy, data)
          node.innerHTML = copy.innerHTML
        }
      })
    }    
  }
}

相关文章

  • VUE的学习记录(3)

    今天学习数据绑定,插值 Vue的视图模板基于DOM实现,通过数据绑定将App组件上定义的数据模型绑定到模板上插值是...

  • vue模板实现3-数据绑定

    这次的改进加入了数据绑定,即更改数据时,视图同步更新。使用了 Object.defineProperty() 方法...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

  • 2019-06-29

    vue的特点 Vue 扩展插件 vue的基本使用 模板语法 模板的理解 双大括号表达式 强制数据绑定 绑定事件监听...

  • Vue面试准备

    (1)vue的三要素 模板, (2)vue是如何实现双向绑定的? 基本原理:数据驱动页面,页面映射数据 核心API...

  • Vue实现数据双向绑定的原理

    Vue实现数据双向绑定的原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数...

  • Vue模板与交互

    1、模板 模板: {{msg}}数据更新模板也会变化 {{*msg}}数据只绑定一次,只适用于vue1.0,vue...

  • 深入Vue响应式原理

    1.Vue的双向数据绑定 参考 vue的双向绑定原理及实现Vue双向绑定的实现原理Object.definepro...

  • 数据代理 、 模板解析、 数据绑定

    7.1. 说明 1)分析 vue 作为一个 MVVM 框架的基本实现原理 数据代理 模板解析 数据绑定 2)不直接...

  • Vue总结1-基本使用和指令

    1.什么是vue,为什么要使用vue,vue的优势 2.vue基本模板 3.数据单向绑定 4.数据双向绑定 5.常...

网友评论

      本文标题:vue模板实现3-数据绑定

      本文链接:https://www.haomeiwen.com/subject/bvogrftx.html