Vue 在 compile 的时候,会把 template 生成对应的 render function,而这个 render function 通常是长这样的
function render () {
with (this) {
return _c('div',{on:{"click":change}},[_c('span',[_v(_s(number))]),_v(" "),_c('span', [_v(_s(name))])])
}
}
不是都说不建议用 with 语句吗?那为什么在 Vue 中会使用到?是出于什么目的吗?求dl解惑,感谢~
大概就是这个意思:vue并没有对模板中的javascript表达式进行ast语法分析,如果要移除with,就需要对javascript表达式进行ast语法分析,并且还需要一个专门的解释器对ast语法树进行解释,这样就会导致存在两个并行的解析器,这样维护成本高,还可能会有潜在的bug风险。所以呢,作者并没有想做这个事情,麻烦费力不讨好