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

重庆做营销型网站建设公司百度站长平台快速收录

重庆做营销型网站建设公司,百度站长平台快速收录,网站建设的会计核算,kol合作推广文章目录 data为什么是一个函数,而不是一个对象?什么情况下可以使用对象?key的作用,为什么不能用Index?render函数,h函数,和template什么关系?vue 是怎么解析template的? template会…

文章目录

    • data为什么是一个函数,而不是一个对象?什么情况下可以使用对象?
    • key的作用,为什么不能用Index?
    • render函数,h函数,和template什么关系?
    • vue 是怎么解析template的? template会变成什么?
    • 父子,子孙传值

data为什么是一个函数,而不是一个对象?什么情况下可以使用对象?

因为Vue组件可以同时存在多个实例,如果直接使用对象形式的data选项,那么所有的实例将会共享同一个data对象,这样就会造成数据互相干扰的问题。

key的作用,为什么不能用Index?

作用:主要用在Vue 的虚拟DOM 算法,在新旧nodes 对比时辨识VNodes,在源码中使用的是 === 来判断的两个DOM元素是否相同,所以不能设置非基本类型。

为什么不能用Index?

  • 性能损耗:用index 作为key 时,在对数据进行,逆序添加,逆序删除等破坏顺序的操作时,会产生没必要的真实DOM更新,从而导致效率低
  • 额外问题:例如在一个li列表后面加一个<input>输入框,然后在给列表前面加一个元素,会导致patch失败,原因是

源码中:

export function isSameVNodeType(n1: VNode, n2: VNode): boolean {return n1.type === n2.type && n1.key === n2.key
}

render函数,h函数,和template什么关系?

render: h => h(App) :表示 Vue 实例选项对象的 render 方法作为一个函数, 接受传入的参数 h函数,返回 h(App) 的函数调用结果。
h函数:是 hyperscript 的简称——意思是“能生成 HTML (超文本标记语言) 的 JavaScript”。这个名字来源于许多虚拟 DOM 实现默认形成的约定。一个更准确的名称应该是 createVnode(),类似vue2的createElement()
接受三个参数,返回vNode节点:

  • tag:一个 HTML 标签名、一个组件、一个异步组件、或一个函数式组件。(必需的)
  • props:与 attribute、prop 和事件相对应的对象。(可选)
  • children:子 VNodes,使用 h() 构建,或使用字符串获取 “文本 Vnode” 或者有插槽的对象。(可选)

render和template都是Vue中定义组件的方式,但它们有一些不同之处:

  • template是一种类HTML的语法,它定义了组件的结构和展示,包括HTML标签、属性、事件和插值等。Vue将template编译成render函数,最终将render函数渲染成虚拟DOM,并将其渲染到页面上。
  • render函数则是一个函数式组件,它的参数是一个createElement函数和上下文对象。render函数用代码方式描述组件的结构和展示,并返回一个虚拟DOM节点,最终也会被渲染到页面上。

相对于template,render函数更加灵活和强大,可以更精细地控制组件的展示。同时,由于render函数是JavaScript代码,因此它可以被更好地集成到其他代码中。template则更加容易编写和理解,但可能会受到HTML标签和属性的限制。
在实际开发中,我们可以选择使用template或render函数来定义组件,具体取决于组件的需求和开发者的习惯。如果组件需要较为复杂的展示逻辑和动态交互,可以使用render函数来实现。如果组件比较简单,可以使用template来编写。

vue 是怎么解析template的? template会变成什么?

Vue.js在解析和编译模板时,会经过以下过程:

  • 解析模板:Vue.js使用自定义的HTML解析器将模板解析成抽象语法树(AST)。解析器会分析模板中的HTML标记、指令、表达式和事件等内容,并构建出一颗表示模板结构的AST。
  • 静态优化:在生成AST的过程中,Vue.js会对静态内容进行优化。静态内容是指在编译过程中不会发生变化的部分,例如纯文本内容。Vue.js会将静态内容标记为静态节点,以在后续更新过程中跳过对其的处理,提高性能。
  • 编译为渲染函数:Vue.js将AST编译为渲染函数。渲染函数是一个JavaScript函数,它接收数据作为参数,并返回一个虚拟DOM(VNode)树,用于渲染组件的视图。
  • 渲染视图:当组件的数据发生变化时,渲染函数会被调用,生成新的虚拟DOM树。Vue.js会通过比较新旧虚拟DOM树的差异,计算出需要更新的部分,并将其应用到实际的DOM上,从而更新组件的视图。

在上述过程中,模板会被转换成一个渲染函数。渲染函数可以是以下几种形式之一:
使用render方法编写的渲染函数:在组件中定义了一个render方法,该方法返回一个虚拟DOM树。
使用单文件组件(.vue文件):Vue.js提供了单文件组件的支持,其中的部分就是模板,通过编译转换为渲染函数。
使用Vue.js的模板语法:在Vue组件的template选项中使用Vue.js的模板语法,也会被编译为渲染函数。
总之,Vue.js将模板解析为AST,然后根据AST生成渲染函数,最终通过渲染函数来渲染组件的视图。这个过程使得Vue.js能够高效地根据数据动态更新视图。

父子,子孙传值

  • 通过 props 传递
  • 通过 $emit触发自定义事件
  • 使用 ref
  • EventBus
  • $parent$root
  • attrs 与 listeners
  • Provide 与 Inject
  • Vuex

父子关系:选择 props 与 $emit进行传递,也可选择ref
兄弟关系:选择$bus,其次可以选择$parent进行传递
祖先与后代:选择attrs与listeners或者 Provide与 Inject
复杂关系的组件:通过vuex存放共享的变量

http://www.yidumall.com/news/29745.html

相关文章:

  • 青海做网站做网站用什么编程软件
  • 临平新城开发建设管委会网站全是广告的网站
  • 无需下载国外黄冈网站推广为什么中国禁止谷歌浏览器
  • 手表网站制作模板百度推广代理商加盟
  • 成都服务器租赁网站seo规划
  • 快速做网站企业seo新人培训班
  • jsp做网站注册页面电商运营是做什么的
  • wordpress 手机商城模板win10优化大师怎么样
  • 商丘网站建设价格电脑清理优化大师
  • 深圳网站建设品牌推广软文营销案例
  • 东莞h5网站开发百度排行榜小说
  • 吉林系统建站怎么用360搜索优化
  • wordpress换域名服务器便宜的seo网络营销推广
  • 做网站页面遇到的问题站点搜索
  • 建程网土石方工程安徽seo网络优化师
  • 资生堂网站建设google搜索排名优化
  • 哈尔滨巨耀网站建设明星百度指数在线查询
  • h5模板网站有哪些seo做关键词怎么收费的
  • 运输网站建设成品网站建站空间
  • 公司网站设计收费班级优化大师
  • 网站建设南京十大教育培训机构排名
  • 网站提示建设中焦作网络推广哪家好
  • 网站绩效营销百度推广账号怎么注册
  • 网页创建站点seo百度站长工具
  • python做视频网站百度账号申诉中心
  • 中国免费素材网站seo推广灰色词
  • 国内疫情防控最新政策vue seo 优化方案
  • 美耐皿 技术支持 东莞网站建设自己怎么做网页推广
  • 微信的网站怎么做aso优化师
  • 深圳坪山网站建设网站页面优化方案