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

做证券考试的网站博客和网站有什么不同

做证券考试的网站,博客和网站有什么不同,国外做图标网站,wordpress4.3下载Vue模板编译 Vue生命周期中#xff0c;在初始化阶段各项工作做完之后调用了vm.$mount方法#xff0c;该方法的调用标志着初始化阶段的结束和进入下一个阶段#xff0c;从官方文档给出的生命周期流程图中可以看到#xff0c;下一个阶段就进入了模板编译阶段(created和befor…Vue模板编译 Vue生命周期中在初始化阶段各项工作做完之后调用了vm.$mount方法该方法的调用标志着初始化阶段的结束和进入下一个阶段从官方文档给出的生命周期流程图中可以看到下一个阶段就进入了模板编译阶段(created和beforeMounted之间的阶段)该阶段所做的主要工作是获取到用户传入的模板内容并将其编译成渲染函数生成模板字符串。然后将这些模板字符串转换成内存中的DOM。 一、Vue 编译原理这块的整体逻辑主要分三个部分 1.将模板字符串转换成element AST(抽象语法树解析器parser 2.对AST进行静态节点标记主要用来做虚拟dom的渲染优化优化器optimizer 3.使用element AST 生成render函数代码字符串代码生成器code generator 伪代码 // main.js文件 new Vue({el: #app,templete: divhello world/div, //可选render: h h(App), //渲染函数 }).$mount(#app) //挂载函数Vue.prototype.__init function (options) {const vm this;vm.$options options;initState(vm);if (vm.$options.el) {//$mount 挂载函数vm.$mount(vm.$options.el)} }Vue.prototype.$mount function (el) {const vm this, options vm.$options;el document.querySelector(el);vm.$el el;if (!options.render) {let templete options.templete; //是否有templete选项if (!templete el) {templete el.outerHTML}//把这个模板变成render函数const render compileToRenderFunction(templete); //把HTML转化成SAT树options.render render;}}解析器AST在线生成 div classcontainer idrootp classname{{name}}/p /div上面一个简单 的模版转换成element AST树形结构后是这样的 {tag: divtype: 1,staticRoot: false,static: false,plain: true,parent: undefined,attrsList: [{name:class,value:container},{name:id:value:root}],attrsMap: {},children: [{tag: ptype: 1,staticRoot: false,static: false,plain: true,parent: {tag: div, ...},attrsList: [{name:class, value:name}],attrsMap: {},children: [{type: 2,text: {{name}},static: false,expression: _s(name)}]}] }我们可以看到上面的dom被解析成了解析器它的原理主要是两部分内容一部分是截取字符串一部分是对截取的字符串做解析。 优化器 优化器的目的就是找出那些静态节点并打上标记而静态节点指的是DOM不需要发生变化的节点也就是里面都是静态标签和静态文本。 标记静态节点有两个好处 一、每次重新渲染的时候不需要为静态节点创建新节点也就是静态节点的解析器不需要重新创建二、在虚拟 DOM中patching的过程可以被跳过 优化器的实现原理主要分两步 一、用递归的方式将静态节点添加static属性用来标识是不是静态节点二、标记所有静态根节点(子节点全是静态节点就是静态根节点) 代码生成器 代码生成器的作用是使用element ASTs生成render函数代码字符串带有__c, v, _s 使用本文开头举的例子中的模版生成后的AST来生成render后是这样的 {render: with(this){return _c(div,[_c(p,[_v(_s(name))])]) } }生成后的代码字符串中看到了有几个函数调用_c、_v、_s。 _c对应的是createElement它的作用是创建一个元素。 1.第一个参数是一个HTML标签名 2.第二个参数是元素上使用的属性所对应的数据对象可选项 3.第三个参数是children _v的意思是创建一个文本节点。 _s是返回参数中的字符串。 代码生成器的总体逻辑其实就是使用element ASTs去递归然后拼出这样的_c(‘div’,[_c(‘p’,[_v(_s(name))])]) 字符串。 问题在模板编译的阶段是不是就会对每个组件所使用的data或者computed值进行访问从而创建新的Watcher进行订阅然后对应的属性的dep就会收集这些watcher从而实现更新的 答不是的模板编译只是会把模板编译成渲染函数只有在渲染函数被执行的时候才会对数据进行访问而渲染函数是在watche实例中执行的所以渲染函数中所使用到的所有数据都会被同一个Watcher监听当这些状态发生变化时会通知这个Watcher这个Watcher会触发VirtualDOM对组件进行渲染。一个组件的模板会被编译成一个渲染函数。每个组件有一个Watcher用来监听模板中所使用到的数据、当这些数据发生变化时通过VirtualDOM进行更新组件的视图
http://www.zqtcl.cn/news/792384/

相关文章:

  • 广州 科技网站建设公司国外酷炫flash网站
  • 焦作网站建设焦作wordpress怎么进行301 htaccess
  • 那个网站能找到人做品牌文化的网站
  • 家里做网站买什么服务器好网站建设报价单 文库
  • 网站百度建设银行广西分行招聘网站
  • 打开网站显示404北京公司请做网站工资
  • 网站开发验收流程图app开发制作的图片
  • 网站流量的作用app定制开发和模板开发的区别
  • 如何做分公司网站网站建设与设计开题报告
  • 易语言怎么做网站网络推广客户渠道
  • 唐山哪里有做网站的网站服务器在
  • 网络服务机构的网站广东省住房及建设厅官方网站
  • 工业设计灵感网站商务网页设计与制作微课版答案
  • 如何引用网站上的资料做文献学历提升的正规机构
  • 如何上传wordpress程序聊城网站优化案例
  • 婚纱网站设计目标无代码制作网页
  • 温州网站提升排名打开搜索引擎
  • 企业市场网络推广方案优化方案答案
  • 茂名网站建设咨询wordpress官网上的主题收费吗
  • 如何自己开发网站WordPress修改前端
  • 哪些网站用黑体做的谁给个网站啊急急急2021
  • aspnet网站开发选择题怎样建设网站是什么样的
  • 专业建站公司电话咨询做暧小视频免费视频在线观看网站
  • 移动软件开发专业seo快排技术教程
  • 怎么推广自己的网站wordpress 管理员
  • 百度权重查询爱站网北京市官方网站
  • 网站代码图片如何查看一个网站流量
  • 上海网站建设公司联系方式自己做的网站主页打开速度
  • 地方网站 源码中国建设银行网站快速查询
  • 有做网站需求的客户网站建设方案就玄苏州久远网络