美文网首页
Vue2.0的字符串模板、html模板、组件、slot

Vue2.0的字符串模板、html模板、组件、slot

作者: 都江堰古巨基 | 来源:发表于2018-01-24 19:32 被阅读0次

字符串模板 VS html模板

首先,Vue 会将 template 中的内容插到 DOM 中,以方便解析标签。由于 HTML 标签不区分大小写,所以在生成的标签名都会转换为小写。例如,当你的 template 为 <MyComponent></MyComponent> 时,插入 DOM 后会被转换为 <mycomponent></mycomponent>。

然后,通过标签名寻找对应的自定义组件。匹配的优先顺序从高到低为:原标签名、camelCase化的标签名、PascalCase化的标签名。例如 <my-component> 会依次匹配 my-component、myComponent、MyComponent。

<!-- 字符串模板、html模板作对比!!!! -->

<!-- 使用字符串模板的情况 -->
<div id="app-a">
    <MyComponenta></MyComponenta>
</div>
<script>
    Vue.component('MyComponenta', {
        template: '<div>hello, world</div>'
    }),
    new Vue({
        el: '#app-a',
        template: '<MyComponenta></MyComponenta>'
    })
</script>

<!-- 使用html模板的情况不能大写 -->
<div id='app-b'>
    <my-componentb></my-componentb>
</div>
<script type="text/javascript">
    Vue.component('MyComponentb',{
        template:'<p>hello,world!</p>'
    }),
    new Vue({
        el:'#app-b',
    })
</script>

组件:

注意的地方:
1.全局注册 VS 局部注册

2.注意v-model:在给 <input /> 元素添加 v-model 属性时,默认会把 value 作为元素的属性,然后把 'input' 事件作为实时传递 value 的触发事件。

3.注意:

<input v-model="something">
这不过是以下示例的语法糖:

<input
  v-bind:value="something"
  v-on:input="something = $event.target.value"

4.组件实例的作用域是孤立的。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据。父组件的数据需要通过 prop 才能下发到子组件中。

5.Vue的组件里面也可以有data、template、methods、watch等属性,需要注意的是component中的data必须为一个函数参考Vue官网例子:

<div id="counter-event-example">
  <p>{{ total }}</p>
  <button-counter v-on:increment="incrementTotal"></button-counter>
  <button-counter v-on:increment="incrementTotal"></button-counter>
</div>
Vue.component('button-counter', {
  template: '<button v-on:click="incrementCounter">{{ counter }}</button>',
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    incrementCounter: function () {
      this.counter += 1
      this.$emit('increment')
    }
  },
})

new Vue({
  el: '#counter-event-example',
  data: {
    total: 0
  },
  methods: {
    incrementTotal: function () {
      this.total += 1
    }
  }
})

6.组件之双向绑定:.sync 修饰符

<comp :foo.sync="bar"></comp>
#相当于:
<comp :foo="bar" @update:foo="val => bar = val"></comp>
#当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件:
this.$emit('update:foo', newValue)

Vue 组件的 API 来自三部分——prop、事件和插槽:

Prop 允许外部环境传递数据给组件;

事件允许从组件内触发外部环境的副作用;

插槽允许外部环境将额外的内容组合在组件中。
7.关于slot(插槽):

<template>
 <div>
   <slot name="CPU">这儿插你的CPU</slot>
   <slot name="GPU">这儿插你的显卡</slot>
   <slot name="Memory">这儿插你的内存</slot>
   <slot name="Hard-drive">这儿插你的硬盘</slot>
 </div>
</template>
<template>
  <computer>
    <div slot="CPU">Intel Core i7</div>
    <div slot="GPU">GTX980Ti</div>
    <div slot="Memory">Kingston 32G</div>
    <div slot="Hard-drive">Samsung SSD 1T</divt>
  </computer>
</template>

相关文章

  • Vue2.0的字符串模板、html模板、组件、slot

    字符串模板 VS html模板 首先,Vue 会将 template 中的内容插到 DOM 中,以方便解析标签。由...

  • vue中的slot与slot-scope

    插槽:也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。slot最核心的两...

  • Vue - 插槽(slot)

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不现实、以及怎样显示由父组件来决定。 插槽模板是slo...

  • vue中slot的理解

    释义 slot, 解释为插槽,它是组件的一块 HTML模板,而这块模板 显示与否 以及 如何显示,取决于父组件。 ...

  • vue中的slot与slot-scope

    前言 插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。 下面这篇文...

  • 理解vue中的插槽------slot与slot-scope

    vue当中的插槽,指的即是slot,是组件当中的一块HTML模板。该模板是否显示,以及如何显示由其父组件说了算。不...

  • slot-scope到底是什么

    插槽slot 插槽,也就是slot 插槽是组件的一块HTML模板 插槽就是要将父组件中的内容渲染到子组件中。就好像...

  • 理解vue中的插槽

    写在前面 插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。 实际上...

  • Vue学习笔记-插槽

    深入理解vue中的slot与slot-scope 插槽,也就是slot,是组件的一块HTML模板。 对于任何一个组...

  • 深入理解vue中的slot与slot-scope

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示、以及怎样显示由父组件来决定。 实际上,一个sl...

网友评论

      本文标题:Vue2.0的字符串模板、html模板、组件、slot

      本文链接:https://www.haomeiwen.com/subject/xmfpaxtx.html