Vue2学习(3)

子组件索引

尽管有 props 和 events,可是有时仍然须要在 JavaScript 中直接访问子组件。为此可使用 ref 为子组件指定一个索引 ID。例如:vue

<div id="parent">
  <user-profile ref="profile"></user-profile>
</div>
var parent = new Vue({ el: '#parent' })
// 访问子组件
var child = parent.$refs.profile

refv-for 一块儿使用时,ref 是一个数组,包含相应的子组件。node

字符串模板(string template)

  • JavaScript 内联模板字符串
  • .vue 组件数组

    非字符串模板(non-string template)

  • DOM 模板app

单元素/组件的过渡

Vue 提供了 transition 外层包裹容器组件(wrapper component),能够给下列情形中的任何元素和组件添加进入/离开(enter/leave)过渡dom

  • 条件渲染(使用 v-if)
  • 条件展现(使用 v-show)
  • 动态组件
  • 组件根节点
<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
</div>

render

每一个元素都是一个节点。每一段文字都是一个节点。甚至注释也都是节点!节点只是页面的一部分。正如在一棵家谱树中同样,每一个节点均可以有子节点(也就是说,每一个节点均可以包含多个子节点)。函数

有效地更新全部这些节点多是很困难的,但幸运的是,你无需手动执行。相反,只需在 Vue 模板中,在页面中添加你须要用到的 HTML:this

<h1>{{ blogTitle }}</h1>

或者经过一个 render 函数:code

render: function (createElement) {
  return createElement('h1', this.blogTitle)
}

在这两种场景中,Vue 会自动保持页面更新,更确切地说,在 blogTitle 修改时,也一样可以及时更新。component

virtual DOM

Vue 经过实现一个 virtual DOM,来跟踪那些「真正须要对 DOM 所作的修改」。仔细看看这一行:blog

return createElement('h1', this.blogTitle)

createElement 实际返回的是什么呢?准确地说,返回的并不是一个真正的 DOM 元素。可能更确切地说,应该将其命名为 createNodeDescription(译注:createNodeDescription,建立节点描述),包含「哪些节点应该由 Vue 渲染在页面上」的相关描述信息,也包括全部子节点的相关描述。咱们将以上这个节点描述称为 “virtual node”(译注:virtual node,虚拟节点),一般缩写为 VNode。”virtual DOM” 就是由 Vue 组件树构建出来的,被称为整个 VNodes 树。

相关文章
相关标签/搜索