閱讀vue原始碼後,簡單實現虛擬dom
class Element {
constructor (type, props, children) {
this.type = type
this.props = props
this.children = children
}
}
const ul = createElement(
'ul',
{id: 'list'},
[
createElement('li', {class: 'item'}, ['Item 1']),
createElement('li', {class: 'item'}, ['Item 2']),
createElement('li', {class: 'item'}, ['Item 3'])
]
)
function createElement (type, props, children) {
return new Element(type, props, children)
}
function createNode (node) {
let el = document.createElement(node.type)
for (let key in node.props) {
if (node.type.toUpperCase() === 'INPUT' || node.type.toUpperCase() === 'TEXTAREA') {
el.value = node.props[key]
} else {
el.setAttribute(key, node.props[key])
}
}
return el
}
ul.render = function (node = ul) {
let root = createNode(node)
if (node.children && node.children.length > 0) {
node.children.forEach(ele => {
if (ele instanceof Element) {
root.appendChild(ul.render(ele))
} else {
root.appendChild(document.createTextNode(ele))
}
})
}
return root
}
const ulRoot = ul.render()
document.body.appendChild(ulRoot)
相關文章
- React原始碼閱讀:虛擬DOM的初始化React原始碼
- 實現一個簡單的虛擬DOM
- 虛擬Dom與Diff的簡單實現
- 全面理解虛擬DOM,實現虛擬DOM
- 解密虛擬 DOM——snabbdom 核心原始碼解讀解密原始碼
- Vue虛擬DOMVue
- vue虛擬dom原理Vue
- react-router-dom 原始碼閱讀React原始碼
- 【vue原始碼】簡單實現directive功能Vue原始碼
- 根據除錯工具看Vue原始碼之虛擬dom(二)除錯Vue原始碼
- Vue原始碼閱讀一:說說vue.nextTick實現Vue原始碼
- React 虛擬Dom 轉成 真實Dom 實現原理React
- Vitural Dom & diff演算法 (一) 虛擬碼實現演算法
- Vue 為什麼要用虛擬 DOM(Virtual DOM)Vue
- Redis原始碼閱讀:sds字串實現Redis原始碼字串
- React 的虛擬 DOM 和 Vue 的虛擬 DOM 有什麼區別?ReactVue
- Vue2原始碼解讀(4) - 響應式原理及簡單實現Vue原始碼
- Vue原始碼閱讀--過濾器Vue原始碼過濾器
- Vue 原始碼閱讀(六)元件化Vue原始碼元件化
- 【原始碼閱讀】AndPermission原始碼閱讀原始碼
- vue 快速入門 系列 —— 虛擬 DOMVue
- vue2.0的虛擬DOM渲染Vue
- python3 原始碼閱讀-虛擬機器執行原理Python原始碼虛擬機
- vue-router 原始碼:實現一個簡單的 vue-routerVue原始碼
- [Redis原始碼閱讀]dict字典的實現Redis原始碼
- 原始碼閱讀之ArrayList實現細節原始碼
- 原始碼閱讀之Java棧的實現原始碼Java
- Vue原始碼閱讀 – 依賴收集原理Vue原始碼
- vue-router原始碼閱讀學習Vue原始碼
- Vue 原始碼閱讀(三)Special AttributesVue原始碼
- Vue原始碼閱讀 - 依賴收集原理Vue原始碼
- 閱讀原始碼後,來講講React Hooks是怎麼實現的原始碼ReactHook
- 通過編寫簡易虛擬DOM,來學習虛擬DOM 的知識!
- 原始碼閱讀之LinkedList實現細節原始碼
- Python原始碼閱讀-閉包的實現Python原始碼
- 實現一個簡單版本的Vue及原始碼解析(一)Vue原始碼
- 實現一個簡單版本的vue及原始碼解析(二)Vue原始碼
- 根據除錯工具看原始碼之虛擬dom(一)除錯原始碼