UNPKG

avalon2

Version:

an elegant efficient express mvvm framework

39 lines (34 loc) 986 B
/** * 虚拟DOM的4大构造器 */ import { avalon, createFragment } from '../seed/core' import { VText } from './VText' import { VComment } from './VComment' import { VElement } from './VElement.modern' import { VFragment } from './VFragment' avalon.mix(avalon, { VText, VComment, VElement, VFragment }) var constNameMap = { '#text': 'VText', '#document-fragment': 'VFragment', '#comment': 'VComment' } var vdom = avalon.vdomAdaptor = avalon.vdom = function(obj, method) { if (!obj) { //obj在ms-for循环里面可能是null return method === "toHTML" ? '' : createFragment() } var nodeName = obj.nodeName if (!nodeName) { return (new avalon.VFragment(obj))[method]() } var constName = constNameMap[nodeName] || 'VElement' return avalon[constName].prototype[method].call(obj) } avalon.domize = function(a) { return avalon.vdom(a, 'toDOM') } export { vdom, avalon, VText, VComment, VElement, VFragment }