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

上海网站建设乐云seowordpress h5页面制作

上海网站建设乐云seo,wordpress h5页面制作,菏泽郓城网站建设公司,大丰网站建设JSX底层渲染机制 一,.步骤 1.把我们写的jsx语法编译为虚拟DOM【virtualDOM】 虚拟DOM对象#xff1a;框架自己内部构建的一套对象体系#xff08;对象的相关成员都是React内部绑定的#xff09;#xff0c;基于这些属性描述出我们所构建视图中的DOM接的相关特征 1基于ba…JSX底层渲染机制 一,.步骤 1.把我们写的jsx语法编译为虚拟DOM【virtualDOM】 虚拟DOM对象框架自己内部构建的一套对象体系对象的相关成员都是React内部绑定的基于这些属性描述出我们所构建视图中的DOM接的相关特征 1基于babel-preset-react-app 把jsx编译为React.createElement(…)的格式。 只要是元素节点必然会基于createElement进行处理 React.createElement(ele,props,…children) ele 元素标签名【或组件】 props 元素的属性集合对象如果没有任何的属性则此值为null children 第三个及其以后得参数都是当前元素的子节点 如下图jsx root.render{h2 classNametitle style{styleObj}XXXX/h2div classNameboxspanx/spanspany/span/div/ }编译为 再把CreateElement的方法执行创建出VirtualDom对象【也有称为JSX元素、JSX对象、ReactChild对象…】 //虚拟DOM对象 virtualDOM{$$typeOf:Symbol(react.element),ref:null,key:null,type:标签名【或组件】,//存储了元素相关属性子节点信息props:{元素的相关节点children:子节点信息【没有子节点就没有则个属性、属性可能是一个值也可能是一个数组】} }/*createElement:创建虚拟DOM对象*/ export fucnction createElement(ele,props,...children){let virtualDOM{$$typeOf:Symbol(react.element),key:null,key:null,ref:null,type:null. props:{}};let lenchildren,lengthvirtualDOM.typeele;if(props){virtualDOM.props{...props}}if(len1){virtualDOM.props.childrenchildren[0]}else if(len1){virtualDOM.props.childrenchildren}return virtualDOM }2.构建的virtualDOM渲染为真实的DOM元素 真实DOM浏览器页面中最后渲染出来让用户看见的DOM元素 基于ReactDOM中的render方法处理 v16 ReactDOM.render(.../domcument.getElementById(root) )v18 const root React.createRoot(dociment.getElementById(root)) root,render(.../ )补充第一次渲染页面是直接从虚拟DOM — 真实ODM但是后续视图更新的时候会经过一个DOM-DIFF的对比计算出补丁包PATCH两次视图差异部分把PATCH补丁包进行渲染 /*render把虚拟DOM变为真实DOM*/ export function render(virtualDOM,container){let {type,props}virtualDOM;if(typeof typestring){//存储的是标签名动态创建这样一个标签let eledomcument.createElement(type);//为标签设置相关属性节点each(props,(value,key){//classNmae的处理if(keyclassName){ele.classNamevaluereturn}//style的处理value存储的是样式对象if(keystyle){each(value,(val,attr){ele.style[attr]val})return}//子节点的处理value存储的children属性值if(keychildren){let children valueif(children.length1){children[children]}children.forEach(child{//子节点是文本节点直接插入if(typeof childstring){ele.appendChild(domcument.createTextNode(child))return; }//子节点又是一个虚拟ODM:递归处理render(child,ele)})return}ele.setAttribute(key,value);})container.appendChild(ele)} }
http://www.yutouwan.com/news/486530/

相关文章:

  • 广州海珠网站开发网站制作与网页制作
  • 网站改版新闻不申请域名可以 做网站吗
  • 泉州企业网站建站模板推广计划地域设置的作用描述不正确的是
  • 聊城做网站公司聊城博达成品网站货源1688免费推荐
  • 怎么做付款下载网站外包的工作值得做吗
  • 做网站公司宣传语seo推广哪家公司好
  • 摄影网站建设文案导购wordpress
  • 做游戏网站用什么系统做钟表商城网站建设方案
  • 免费网站空间和域名开发一个app软件能赚钱吗
  • 最新在线免费网站做100个网站挂广告联盟
  • 如何自己做优惠卷网站做网站排名步骤
  • 免费浏览的网站入口网站建设与网页设计制作教程
  • 那曲网站建设小微企业查询系统官网入口
  • 自己做的网站百度搜不到微信商城小程序平台
  • 哪些网站是django做的各大门户网站用什么做的
  • 上海网站建设hxwlkj稼禾建设集团网站
  • 百度网址大全首页设为首页seo网站推广案例
  • 南宁网站建设外包客户资料管理软件免费版
  • 汕头网站制作wordpress 搜索主题
  • 深圳住房和建设局网站故障网站建设问题分类和排除方法分析
  • 站长网站素材网网站建设需要资质
  • 在线logo制作网站长春企业建站系统模板
  • 网站建设工作报告psd 下载网站
  • 企业网站设置开发一款电商app需要多少钱
  • ps中网站页面做多大的深圳十大网站建设公司
  • 做教学的视频网站有哪些问题wordpress需求规划书
  • 如何做网站制作如何自己搭建vps上外网
  • 找专业做网站新手互联网创业项目
  • 请别人做网站大概要多少钱百度商城网站建设
  • 视频网站怎么做统计做电影网站需要多打了服务器