当前位置: 首页 > news >正文

英德网站建设室内装饰设计说明

英德网站建设,室内装饰设计说明,建什么样的网站好,无忧网站建设多少钱初识虚拟DOM渲染器什么是虚拟DOM什么是渲染器渲染器的实现组件是什么什么是虚拟DOM 首先简单说一下什么是虚拟DOM#xff0c;虚拟DOM就是一个描述真实DOM的JS对象 例如#xff1a; 真实的DOM元素 div onClickalert(click me)click me/div可以… 初识虚拟DOM渲染器什么是虚拟DOM什么是渲染器渲染器的实现组件是什么什么是虚拟DOM 首先简单说一下什么是虚拟DOM虚拟DOM就是一个描述真实DOM的JS对象 例如 真实的DOM元素 div onClickalert(click me)click me/div可以用下面的JS对象虚拟DOM描述再通过渲染器渲染成真实的DOM // 描述虚拟DOM对象 const vnode {tag: div,props: {onClick: () {alert(click, me)}},children: click me }什么是渲染器 渲染器的作用就是把虚拟DOM渲染成真实的DOM如下图所示 渲染器的实现 详细看代码描述 重点看 mountElement 函数部分描述如何通过js对象渲染出真实的DOM元素 /** File Created: Monday, 6th March 2023 6:34:24 pm* Author: hotsuitor (hotsuitorqq.com)* -----* Last Modified: Monday, 6th March 2023 6:34:50 pm* Modified By: hotsuitor (hotsuitorqq.com)* -----* Copyright 2022 - 2023 Your Company, Your Company*//*** 渲染器* param {*} vnode 虚拟DOM对象* param {*} container 真实的DOM元素作为挂载点* 渲染器会把虚拟DOM渲染到该挂载点下*/ function renderer(vnode, container) {if (vnode.tag string) {// 说明描述的是标签元素mountElement(vnode, container)} }/*** 渲染标签元素* param {*} vnode* param {*} container*/ function mountElement(vnode, container) {// 使用vnode.tag作为标签名创建DOM元素const el document.createElement(vnode.tag)// 遍历 vnode.props ,将属性、事件添加到DOM元素for (const key in vnode.props) {// on开头表示是事件if (/^on/.test(key)) {// 添加事件onClick-click, 事件注册el.addEventListener(key.substring(2).toLowerCase(), vnode.props[key])}}// 递归处理 childrenif (typeof vnode.children string) {// 是字符串说明是文本节点直接添加到父元素el.appendChild(document.createTextNode(vnode.children))} else if (Array.isArray(vnode.children)) {// 遍历处理children子节点vnode.children.forEach((child) renderer(child, el))}// 将元素添加到挂在点下container.appendChild(el) }// demo const vnode {tag: div,props: {onClick: () {alert(click me!)},},children: click me, }renderer(vnode, document.body) 组件是什么 现在项目开发基本离不开组件的封装我们再看一下组件是什么 组件的本质是一组DOM元素的封装组件是由一组虚拟DOM元素组成的内容。目的是使代码可复用性提高不必写冗余代码 下面看代码实现重点看 mountComponent 函数部分组件是一个封装了一组虚拟DOM的对象。通过复用这个对象的虚拟DOM就可以实现了组件的复用。 /** File Created: Monday, 6th March 2023 6:34:24 pm* Author: hotsuitor (hotsuitorqq.com)* -----* Last Modified: Monday, 6th March 2023 6:34:50 pm* Modified By: hotsuitor (hotsuitorqq.com)* -----* Copyright 2022 - 2023 Your Company, Your Company*//*** 渲染器* param {*} vnode 虚拟DOM对象* param {*} container 真实的DOM元素作为挂载点* 渲染器会把虚拟DOM渲染到该挂载点下*/ function renderer(vnode, container) {if (vnode.tag string) {// 说明描述的是标签元素mountElement(vnode, container)} else if (vnode.tag object) {// 描述的是组件mountComponent(vnode, container)} }/*** 渲染标签元素* param {*} vnode* param {*} container*/ function mountElement(vnode, container) {// 使用vnode.tag作为标签名创建DOM元素const el document.createElement(vnode.tag)// 遍历 vnode.props ,将属性、事件添加到DOM元素for (const key in vnode.props) {// on开头表示是事件if (/^on/.test(key)) {// 添加事件onClick-click, 事件注册el.addEventListener(key.substring(2).toLowerCase(), vnode.props[key])}}// 递归处理 childrenif (typeof vnode.children string) {// 是字符串说明是文本节点直接添加到父元素el.appendChild(document.createTextNode(vnode.children))} else if (Array.isArray(vnode.children)) {// 遍历处理children子节点vnode.children.forEach((child) renderer(child, el))}// 将元素添加到挂在点下container.appendChild(el) }/*** 渲染组件* param {*} vnode* param {*} container*/ function mountComponent(vnode, container) {// tag是组件对象调用render方法得到渲染的内容虚拟DOMconst subtree vnode.tag.render()renderer(subtree, container) }/** 组件虚拟DOM */ const MyConpoment {render() {return {tag: div,props: {onClick: () {alert(hello)}},children: click me component}} }const vnode {tag: MyConpoment }renderer(vnode, document.body)
http://www.hkea.cn/news/14568183/

相关文章:

  • 网站建设验收方案wordpress seo代码
  • 网站要钱怎么seo的站外优化流程
  • 烟台网站建设平台这个域名的网站做违法的事
  • 广州海珠建网站网站和第三方建设
  • steam官方网站下载重庆公司网站制作公司
  • 住房和城乡建设部网站31号文wordpress 插件 语言
  • 用于做网站头的图片wordpress 增加作者
  • 宣传类的网站有哪些yahoo引擎入口
  • 医院网址企业网站建设优化策划
  • 龙岗区住房和建设局官方网站wordpress百度搜索对接
  • 网站后台管理系统密码网站建设与开发选题
  • 有哪些网站可以找兼职做英文网站模板制作
  • 华亮建设集团股份有限公司网站娄底网站建设开发
  • 建网站成本个人主页网站设计论文
  • 上海建设工程造价网站wordpress可视化建站
  • 网站建设市场报价建设asp网站视频教程
  • 帮别人做违法网站会怎么样家装效果图网站
  • 网络销售怎么做自己的网站网页设计专业学校
  • 制作网站用什么软件网站推广教程
  • 吉林网站建设企业iis网站
  • 罗湖区做网站的公司网络宣传的方法
  • 建设一个网站的意义超便宜的网站
  • 好的建筑设计网站推荐重庆网站建设 狐灵
  • 在建设银行网站申请完信用卡吗四川成都广告公司
  • 中元建设集团股份有限公司网站WordPress书籍插件
  • 安庆网站开发微信开发哪家公司好
  • 西部数码手机网站服务周到的上海网站建设公司
  • wordpress 网站底部美化公司怎么建立网站吗
  • 域名 和网站有什么区别软件开发主要工作内容
  • 网站建设在哪里接单wordpress更新 无法创建目录