美文网首页web前端
虚拟dom渲染真实dom

虚拟dom渲染真实dom

作者: 姜治宇 | 来源:发表于2021-10-26 15:37 被阅读0次

真实dom

    <ul id='list'>
        <li class='item'>Item 1</li>
        <li class='item'>Item 2</li>
        <li class='item'>Item 3</li>
    </ul>

虚拟dom

    let el = new Element('ul', { id: 'list' }, [
        new Element('li', { class: 'item' }, ['Item1']),
        new Element('li', { class: 'item' }, ['Item2']),
        new Element('li', { class: 'item' }, ['Item3']),
    ]);

构建连接类

    class Element {
        constructor(tagName, props, children) {
            this.tagName = tagName;
            this.props = props;
            this.children = children;
        }
        render() { //渲染,递归
            let el = document.createElement(this.tagName);
            let props = this.props;
            for (let propName in props) {
                let propValue = props[propName];
                el.setAttribute(propName, propValue);
            }
            let children = this.children || [];
            children.forEach((child) => {
                var childEl;
                if (child instanceof Element) {
                    childEl = child.render();
                } else {
                    childEl = document.createTextNode(child);
                }
                el.appendChild(childEl);
            });
            return el;
        }
    }

    /**虚拟dom描述真实dom
    <ul id='list'>
        <li class='item'>Item 1</li>
        <li class='item'>Item 2</li>
        <li class='item'>Item 3</li>
    </ul>
    **/
    let el = new Element('ul', { id: 'list' }, [
        new Element('li', { class: 'item' }, ['Item1']),
        new Element('li', { class: 'item' }, ['Item2']),
        new Element('li', { class: 'item' }, ['Item3']),
    ]);
    let ul = el.render();
    document.body.appendChild(ul);

相关文章

  • 2020-06-09虚拟(Dom)+Diff算发

    虚拟Dom 创建虚拟DOM(创建文件element.js>如何创建Dom以及虚拟Dom渲染真实的Dom) 主文件(...

  • useState原理

    首次渲染 ——调用App(),得到虚拟DOM1,把虚拟DOM1渲染成真实DOM用户点击button后,调用setN...

  • 虚拟dom渲染真实dom

    真实dom 虚拟dom 构建连接类

  • 虚拟DOM和Diff算法

    一、虚拟DOM 虚拟DOM不是真实的DOM,而是一个JS对象。它的作用是判断DOM是否改变、哪些部分需要被重新渲染...

  • React 更新机制

    React 的更新流程 React 的渲染流程是: JSX → 虚拟 DOM → 真实 DOM React 的更新...

  • react的设计思想

    1.Virtual DOM(虚拟dom) 为什么要使用虚拟dom呢1.dom渲染在渲染中是最昂贵的,尽量减少dom...

  • 虚拟 DOM 和 DOM diff

    概念 虚拟DOM 是什么:其实就是个js对象虚拟 dom 是相对于浏览器所渲染出来的真实 dom 的,在react...

  • Vue虚拟Dom与diff算法原理

    什么是虚拟DOM? 真实的元素节点: 为什么使用虚拟DOM? 虚拟DOM的作用是什么? 虚拟DOM和真实DOM的区...

  • Vue2.0的虚拟DOM渲染原理

    Vue2.0采用了虚拟DOM来代替对真实DOM的操作,最后通过某种机制来完成对真实DOM的更新,渲染视图。所谓的虚...

  • vue.js简介

    特点 虚拟DOM1、DOM :成对出现的标签;PC上渲染还可以,但是在移动端渲染DOM效果很差;2、虚拟DOM 采...

网友评论

    本文标题:虚拟dom渲染真实dom

    本文链接:https://www.haomeiwen.com/subject/phqyaltx.html