-
Notifications
You must be signed in to change notification settings - Fork 316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
《深入浅出Vue.js》讨论区 #34
Comments
书中第11页,这是不得恢复先入栈的target? vue.js源码/src/core/observer/dep.js#L58-L66 和/src/core/observer/watcher.js#L119是通过栈来做的。如果不恢复先入栈的target,就不能实现深层次的响应了 get () {
const preTarget = window.target
window.target = this
const value = this.getter.call(this.vm, this.vm)
window.target = preTarget
return value
} |
@cytle 对的,Vue.js的源码是一个栈。但书里并不是100%还原源码,因为真实的Vue.js有很多用于处理细节和bug的代码,这些代码并不利于初学者学习,会干扰读者理解主要思想。书里用 window.target 来实现在原理与思想上是一样的,而且理解成本更低。 举个例子:假设我们的目标是打印log,初学者只需要理解console.log能打印就行了,但真实项目代码中可能为了兼容,会写一些额外的代码来兼容 console.log 语法。但其实对于学习来说没必要关注兼容问题,他只需要理解这里的作用是打印log就行了。😁😁 |
嗯,我提出这个问题是看到这里时候发现和我之前理解的有冲突,这里不处理target总觉得怪怪的😁。不过你说的很有道理,能够理解 |
求拉一下微信进vue二维码失效了, 微信号xyzxiaozhongge。@berwin |
求拉微信群 lidog000 |
为什么Dep的notify函数里const sub = this.subs.slice(), 要这样多一步呢? 不直接用const sub = this.subs,这样有什么特别用意吗? |
表示拷贝一份subs,如果没理解错的话,是为了稳定subs列表, |
@cytle subs好像不会增加,因为每个属性对应一个Dep, 然后每次改变就往对应的Dep的subs塞一个watcher。但是后来我发现我更改值的次数多了,就会塞更多的watcher,然后没事通知Dep的时候就会重复触发多次watcher,这样显然不对,所以我改成this.subs.slice(this.subs.length - 1)让它每次都值通知最新的watcher。源码也是写this.subs.slice(),所以我就很疑惑。 |
|
勘误~ 书中第59页,6.3.6的那个代码是错的,第三次印刷已经修复该错误。正确的代码是: {
functionalContext: {...},
functionalOptions: {...},
context: {...},
data: {...}
tag: "div",
...
} |
@CMS2019 对哒~ 是这样的~ 你可以写个demo测一下~ |
@berwin 你好 ,刚刚测了一下确实会收集 x,y,z 三个依赖到一个watch中. 谢谢😆 |
博文好,第59页的组件节点,componentOptions属性包含了tag等信息,但是下面的tag是写在和componentOptions同级的位置呀. |
@Boboboer 哈哈哈哈,这块确实有点没写清楚,因为有两个tag。例如:同级的tag叫:"vue-component-1-child",那么componentOptions里面的tag就叫“child" 😂 |
为什么不出pdf版本啊 |
@nibihzoay 这个都是出版社规定哒,我也不知道为啥没有pdf版,哈哈哈哈~ |
第11页的第12行对于理解造成了一些困扰:我想了一段时间为什么 后来明白, 建议增加一些注释,或者调整一下写法。望采纳 |
第九页中notify()的subs[i].update()是不是 watcher的update() |
@JJoinIn 这是出版社装订的问题,一般是极个别现象,昨天微信上要了您的收获地址,现在已经免费给您发了一本新书在路上,注意查收噢~~ |
书本第40页4.2.3,书本前面讲到过像this.list[0] = 2这种操作Vue是无法检测到的,那么调用observerArray()循环检测数组中的每一项时,当数组值不是Object而是Number时,调用this.walk(value)方法检测到不是Object就不会进行下一步监听,那么4.2.3例子中直接使用target[key] = val 不是不会触发视图更新?而且vm.$set(list,0,'2')这种方式按该例子看来不是等同于 this.list[0] = 2么? |
这阵子刚阅读完这本书,有一个小疑问,思来想去没想通。就是关于:本书第15页上说的,外界通过Watcher来读取数据,从而触发getter来收集依赖。 |
看来你漏掉了一些细节,vm. _render()时候会依次访问到依赖的所有数据,触发getter
…---原始邮件---
发件人: "shisanOnly"<[email protected]>
发送时间: 2019年8月28日(星期三) 晚上9:14
收件人: "berwin/Blog"<[email protected]>;
抄送: "Mention"<[email protected]>;"XYH1996"<[email protected]>;
主题: Re: [berwin/Blog] 《深入浅出Vue.js》讨论区 (#34)
这阵子刚阅读完这本书,有一个小疑问,思来想去没想通。就是关于:本书第15页上说的,外界通过Watcher来读取数据,从而触发getter来收集依赖。
很好奇外界是怎么通过Watcher来读取数据的。可是又没想不通。望得到大佬的指点。
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
书里计算属性的实现方式提了两种,但是vue的最新源码并没有采用第二种方式诶。我只有在v2.5.17-beta.0发现过,为啥没合并呢 |
@NLRX-WJC 向 《深入浅出Vue.js》 致敬为什么在电子书中一个字都没提。。。。 😑😑 真正的致敬应该在电纸书最开始就说明,本电子书中的内容参考某某书以及某某资料再结合自己的学习和理解最终产出不是嘛? |
@NLRX-WJC 链接不知道为啥打开404,不过楼主书还得卖呢,你直接贡献开源了也不好吧 |
@NLRX-WJC 主要是我这本书只有”人民邮电出版社“有版权,我自己也不能拿去其他平台恰饭。你的电子书我看超过一半的内容都是来自我书中,确实会有版权问题。 如果以学习为目的我建议改成私有仓库自己学习或复习用,而以笔记的名义公开出来恰饭感觉有点不妥。 🤔 |
@berwin 好的,感谢大佬提醒,我去修改 |
书中第106页,27行的注释应该是 "判断该标签是否存在闭合" 吧,这里应该不管是自闭合还是非自闭合, if (!unary) {
stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });
lastTag = tagName;
} |
您好,还能进群吗 |
本书第14章“生命周期”,14.7.4节 初始化computed,最后部分介绍了新版计算属性方案: 回退的原因: vuejs/vue#8446 所以实际上往后直到最新版本,都没用到书中提到的新版本计算属性方案 |
This comment has been minimized.
This comment has been minimized.
|
p25 页: 因为拦截器是原型方法,所以可以直接通过 this.__ob__来访问Observer实例,这个怎么理解? |
大佬,能麻烦拉我进群吗?微信号 l544402029 |
求拉微信 wxb_1202 |
可以加一下该书的群吗?
…------------------ 原始邮件 ------------------
发件人: "berwin/Blog" ***@***.***>;
发送时间: 2021年9月4日(星期六) 下午5:15
***@***.***>;
***@***.******@***.***>;
主题: Re: [berwin/Blog] 《深入浅出Vue.js》讨论区 (#34)
本书第11页, Watcher类的update 方法,触发了getter, 又会添加依赖到数据,这样导致每触发一次数据更新就重复添加一次依赖,这样有问题吧
addDep 时有去重的
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
|
怎么微信失效了,大佬拉下我,微信19899775109我群里探讨 |
可以拉我一下吗,我想加群,微信Luan15715398039 |
出来冒泡了 |
可以拉我一下吗?我想进群,大佬,我的微信:maomin9761 |
求拉微信 cmj3257 |
求拉微信ychanmy |
vuejs读者,能拉我vx吗: Awei1137551712 , 还想问一下淘系招聘的事情。 |
博文大佬你好,我是深入浅出Vue.js的读者,请拉我进一下微信群,sunnyAfterSnow |
关于本书的任何意见和建议都可以在这里讨论~
可以在这里免费阅读本书第九章:http://www.ituring.com.cn/book/tupubarticle/25715
书中的代码:https://github.com/berwin/easy-to-understand-Vue.js-examples
也可以加入本书的微信讨论群(群已满100人,添加微信
Berwin1995
我拉进群,加我好友时建议说明自己是Vue.js读者)。The text was updated successfully, but these errors were encountered: