MCPcopy Create free account
hub / github.com/ygs-code/vue / genElement

Function genElement

vue.js:14733–14799  ·  view source on GitHub ↗
(
        el, //ast对象或者虚拟dom
        state //渲染虚拟dom的一些方法
    )

Source from the content-addressed store, hash-verified

14731
14732 //根据el判断是否是组件,或者是否含有v-once,v-if,v-for,是否有template属性,或者是slot插槽,转换style,css等转换成虚拟dom需要渲染的参数函数
14733 function genElement(
14734 el, //ast对象或者虚拟dom
14735 state //渲染虚拟dom的一些方法
14736 ) {
14737 console.log(state)
14738 console.log(el)
14739
14740
14741
14742 if (el.staticRoot && !el.staticProcessed) {
14743 //将子节点导出虚拟dom 渲染函数的参数形式。静态渲染
14744 return genStatic(el, state)
14745 } else if (el.once && !el.onceProcessed) {
14746 //参考文档 https://cn.vuejs.org/v2/api/#v-once
14747 // v-once
14748 // 不需要表达式
14749 // 详细:只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能
14750 // <!-- 单个元素 -->
14751 // <span v-once>This will never change: {{msg}}</span>
14752 return genOnce(el, state);
14753 } else if (el.for && !el.forProcessed) {
14754 // v-for
14755 //判断标签是否含有v-for属性 解析v-for指令中的参数 并且返回 虚拟dom需要的参数js渲染函数
14756 return genFor(el, state)
14757 } else if (el.if && !el.ifProcessed) { //判断标签是否有if属性
14758 // v-if
14759 //判断标签是否含有if属性 解析 if指令中的参数 并且返回 虚拟dom需要的参数js渲染函数
14760 return genIf(el, state)
14761 } else if (el.tag === 'template' && !el.slotTarget) {
14762 //标签是模板template
14763 //获取虚拟dom子节点
14764 return genChildren(el, state) || 'void 0'
14765 } else if (el.tag === 'slot') {
14766 //如果标签是插槽
14767 return genSlot(el, state)
14768 } else {
14769 // component or element
14770 //组件或元素
14771 var code;
14772 if (el.component) { //如果是组件
14773
14774 //创建一个虚拟dom 的参数渲染的函数
14775 code = genComponent(
14776 el.component,
14777 el,
14778 state
14779 );
14780 } else {
14781
14782 var data = el.plain ? //如果标签中没有属性则这个标志为真
14783 undefined :
14784 genData$2(el, state);
14785
14786 var children = el.inlineTemplate ? //是不是内联模板标签
14787 null :
14788 genChildren(el, state, true);
14789 code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
14790 }

Callers 6

generateFunction · 0.85
genStaticFunction · 0.85
genOnceFunction · 0.85
genTernaryExpFunction · 0.85
genScopedSlotFunction · 0.85
genNodeFunction · 0.85

Calls 8

genStaticFunction · 0.85
genOnceFunction · 0.85
genForFunction · 0.85
genIfFunction · 0.85
genChildrenFunction · 0.85
genSlotFunction · 0.85
genComponentFunction · 0.85
genData$2Function · 0.85

Tested by

no test coverage detected