b2c信息网

您现在的位置是:首页 > 热点问题 > 正文

热点问题

vuejs的源码是es5的吗(vue需要es6)

hacker2022-07-12 14:51:35热点问题83
本文目录一览:1、这种VUE代码是怎么写的?2、

本文目录一览:

这种VUE代码 是怎么写的?

应该是打包工具自动生成的吧。

像这种代码类似库源码,是挺难阅读的。

第一节,Vue.js框架是什么,为什么选择它

如果你还在用jquery频繁操作你的DOM来更新页面的话,那么,你可以用Vue.js来解放你的DOM操作了。

如果你的项目中有多个部分是相同的,并可以封装成一个组件,那么,你可以试试用Vue.js。

此外,Vue.js的核心实现中使用了ES5的Object.defineProperty特性,IE8及以下版本浏览器是不兼容的,所以,你的项目需要兼容这些较低版本的浏览器的话,那么,Vue.js就不适用了。

毕竟,开发一个项目的目的不是为了使用某个框架。

vuejs源码用了什么设计模式,具体点的

最简单的订阅者模式

// Observer

class Observer {

constructor (data) {

this.walk(data)

}

walk (data) {

// 遍历

let keys = Object.keys(data)

for(let i = 0; i keys.length; i++){

defineReactive(data, keys[i], data[keys[i]])

}

}

}

function defineReactive (data, key, val) {

observer(val)

// dep 为什么要在这里实例化, 就是为了实现, 对象每一层的 每一个key都有自己的一个订阅实例, 比如 a.b 对应 dep1, a.c 对应dep2, 这里虽然都是let dep = new Dep()

// 但每次来到这个方法, dep都是独立的, 会一直保留在内存. 这样在每次调用set方法都能找到这个a.b对应的dep

// dep 这里会一直保存, 是因为闭包的关系, Object这个全局的函数, 引用了上层的作用域, 这个作用域包含了 dep, 除非Object = null, 或者退出浏览器, dep才会消失

//实例化之后, dep就有了被订阅, 和发布消息的功能, dep不写在这里也是可以的, 多定义一个全局函数, 每次obser的时候增加一个dep

let dep = new Dep()

Object.defineProperty(data, key, {

enumerable: true,

configurable: true,

get: function () {

//每次new Watch('a.b'), 都会先执行get方法, 进而来到这里, 触发 dep.depend(), 这个dep就是 a.b 对应的 订阅,

dep.depend()

return val

},

set: function (newVal) {

if(val === newVal){

return

发表评论

评论列表

  • 听弧命轴(2022-07-12 15:34:44)回复取消回复

    al) { observer(val) // dep 为什么要在这里实例化, 就是为了实现, 对象每一层的 每一个key都有自己的一个订阅实例, 比如 a.b 对应 dep1, a.c 对应dep2, 这里虽然都是let dep = new Dep() //

  • 辞眸鹿鸢(2022-07-12 19:51:37)回复取消回复

    this.walk(data) } walk (data) { // 遍历 let keys = Object.keys(data) for(let i = 0;

  • 拥嬉矫纵(2022-07-12 16:32:20)回复取消回复

    defineReactive(data, keys[i], data[keys[i]]) } }}function defineReactive (data, key, val) { observer(