vue源码阅读—07—编译原理之parse


ast树是一个js对象,ast树是对模板的一种描述;

类似于vnode是对真实dom的一种描述,

ast树是对模板的一种描述;

 

 

注意:

我们调试代码时,除了debugger还有consolelog即clog方式;简单的代码可能就直接clog调试了。

但是有个问题,比如说我们在const ast = parse(template.trim(), options)代码后,打印ast

vue源码阅读—07—编译原理之parse

 

但是clog一个引用数据类型,在后续optimize(ast, options)会对变量ast做修改,

所以,当我们我们在控制台打印的ast其实是被optimize修改了的,并不是parse后的原生ast;因因为ast是一个引用堆内存的地址,堆里内容变了,它也就随之变了。

那怎么解决?

1.使用debugger

2.如果提前知道ast可能会边,使用Json.stringify()进行序列化;或者使用OBject.assgn()进行浅拷贝;

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/278908.html

(0)
上一篇 2022年8月4日
下一篇 2022年8月4日

相关推荐

发表回复

登录后才能评论