不轻易修改原有逻辑,但是可以将原有的函数储存起来,再重新声明。整体流程先看大概的整体流程
key?:value (key: value|void);el?:string|Element是flow的语法,表示传入的el字符串可以是string和Element以及void类型——undefined类型,hydrating?: boolean同样,必须是布尔类型和undefined。
key:?value (key: value|void|null);表示该key必须为value或者undefined以及null类型。
function():value (:value):Component表示函数返回值必须为Component类型。
function(key:value1|value2) (key:value1|value2)表示key必须为value1或者是value2类型。编译RenderFnel = el && query(el)对传入的el元素节点做了确认,如果传入的节点容器没有找到的便警告并且return一个createElement('div')新的div。
在JavaScript语言精粹一书中提到,尽量不要在你的函数内使用with()语法,它可能会让你的应用程序无法调试。但是尤雨溪这么使用,使用闭包将其封装在了函数内,无需担心外泄。ƒ (a, b, c, d) { return createElement(vm, a, b, c, d, false); }/src/core/instance/render.js定义该方法// 将 createElement 函数绑定到这个实例上以便在其中获得renderFn上下文。vm._c = (a, b, c, d) => createElement(vm, a, b, c, d, false)复制代码指向createElement()函数,它又指向_createElement(),该函数定义在/src/core/vdom/create-element.js。最终返回的是一个Vnode。该函数定义可以在本文目录里跳转查看其他的函数我们可以在 /rc/core/instance/render-helper/index.js里找到相关定义
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |