Vue.js-08:第八章 - 组件的基础知识_玖富娱乐主管


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

 一、媒介

  在之前的进修中,我们关于 Vue 的一些基本语法举行了简朴的相识,经由历程之前的代码可以或许清楚的看出,我们在运用 Vue 的悉数历程,终究都是在对 Vue 实例举行的一系列操纵。
  这里就会引出一个题目,就像我们刚最先进修 C# 的时刻把悉数的代码一股脑的写到 Main 要领中,如今我们把一切关于 Vue 实例的操纵悉数写在一块,这必然会致使 这个要领又长又欠好明白。
  在 C# 的进修历程当中,跟着不断进修,我们最先将一些相似的营业逻辑举行封装,重用一些代码,从而到达简化的目标。那末,如安在 Vue 中怎样完成相似的功用呢?这里就须要提到组件这一观点了,本章,我们就来进修 Vue 中组件的基本知识。

  进修系列目次地点:https://www.cnblogs.com/danvic712/p/9549100.html

  仓储地点:https://github.com/Lanesra712/VueTrial/blob/master/Chapter02-Bronze/component/concept.html

 二、干货合集

  1、组件是什么

  组件是 Vue 中的一个重要观点,它是一种笼统,是一个可以或许复用的 Vue 实例,它具有无独有偶的组件称号,它可以或许扩大我们的 HTML 元素,以组件称号的体式格局作为我们自界说的 HTML 标签。由于组件是可复用的 Vue 实例,以是它们与 new Vue 吸收雷同的选项,比方 data、computed、watch、methods 和生命周期钩子等。唯一的破例是像 el 如许根实例特有的选项。
  比方,在一个体系的绝大多数的网页中,网页都包罗 header、menu、body、footer 等等部分,在许多时刻,同一个体系中的多个页面,可以或许仅仅是页面中 body 部分显现的内容分歧,因而,我们就可以或许将体系中反复涌现的页面元素设想成一个个的组件,当我们须要运用到的时刻,援用这个组件便可。

  不外,与我们在写 C# 时对代码举行模块化的分别分歧,模块化重要是为了完成每一个模块、要领的职能单一,我们一样平常是经由历程代码逻辑的角度举行分别;而 Vue 中的组件化,更多的是为了完成关于前端 UI 组件的重用。
  在 Vue 中建立一个新的组件以后,为了能在模板中运用,这些组件必须先举行注册以便 Vue 可以或许辨认。在 Vue 中有两种组件的注册范例:全局注册和部分注册。
  全局注册的组件可以或许用在其被注册以后的任何 (经由历程 new Vue) 新建立的 Vue 根实例,也包孕其组件树中的一切子组件的模板中运用;而部分注册的组件只能在以后注册的 Vue 实例中举行运用。

  2、全局组件的建立体式格局

  在 Vue 中建立全局组件,一般的做法是先运用 Vue.extend 要领构建模板工具,然后经由历程 Vue.component 要领来注册我们的组件,由于,组件末了会被剖析成自界说的 HTML 代码,因而,我们可以或许直接在 html 中经由历程组件称号作为标签运用。

<div id="app">
    <com></com>
</div>

<script>
    //1、运用 Vue.extend 构建模板工具
    var comElement = Vue.extend({
        template: '<h3>这是运用 Vue.extend 建立的组件,啊啊啊啊啊啊</h3>'
    })

    //2、运用 Vue.component 注册全局组件
    Vue.component('com', comElement)

    var vm = new Vue({
        el: '#app',
        data: {}
    });
</script>

  从掌握台中可以或许看到,我们自界说的组件已被剖析成了 HTML 元素。这里,须要注重一个题目,当我们接纳 Camel 的体式格局定名我们的组件时,在运用这个组件的时刻,须要将大写字母改成小写字母,同时,两个字母之间须要运用 - 举行衔接。

<div id="app">
    <my-com></my-com>
</div>

<script>
    //1、运用 Vue.extend 构建模板工具
    var comElement = Vue.extend({
        template: '<h3>这是运用 Vue.extend 建立的组件,啊啊啊啊啊啊</h3>'
    })

    //2、运用 Vue.component 注册全局组件
    Vue.component('myCom', comElement)

    var vm = new Vue({
        el: '#app',
        data: {}
    });
</script>

  固然,我们也可以或许直接在 Vue.component 中以一种相似 C# 中的匿名工具的体式格局直接注册全局组件。

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-
<div id="app">
    <com2></com2>
    <com3></com3>
</div>

<script>
    Vue.component('com2', Vue.extend({
        template: '<h3>这是直接运用 Vue.component 建立的组件,啊啊啊啊啊啊</h3>'
    }))

    Vue.component('com3', {
        template: '<h3>这是直接运用 Vue.component 建立的组件,啊啊啊啊啊啊</h3>'
    })

    var vm = new Vue({
        el: '#app',
        data: {}
    });
</script>

  上面的示例中,只是在 template 属性中界说了一个简朴的 html 代码,在现实的运用中,template 属性指向的模板内容可以或许包罗许多的元素,而运用 Vue.extend 建立的模板必须有且只要一个根元素,因而,当须要建立具有庞杂元素的模板时,你可以或许在最外层再套一个 div。

<div id="app">
    <com></com>
</div>

<script>
    //1、运用 Vue.extend 构建模板工具
    var comElement = Vue.extend({
        template: '<h3>这是运用 Vue.extend 建立的组件,啊啊啊啊啊啊</h3><h4>呜呜呜呜</h4>'
    })

    //2、运用 Vue.component 注册全局组件
    Vue.component('com', comElement)

    var vm = new Vue({
        el: '#app',
        data: {}
    });
</script>

  当 template 属性中包罗许多的元素时,不克不及运用代码提醒照样会显得对照不方便,这时候,我们可以或许运用 template 标签来界说我们的模板,经由历程 id 来肯定组件的模板信息。

<div id="app">
    <com></com>
</div>

<template id="tmpl">
    <div>
        <h3>这是运用 Vue.extend 建立的组件,啊啊啊啊啊啊</h3>
        <h4>呜呜呜呜</h4>
    </div>
</template>


<script>
    Vue.component('com', {
        template: '#tmpl'
    })


    var vm = new Vue({
        el: '#app',
        data: {}
    });
</script>
</body>

  3、部分组件的建立体式格局

  某些时刻,我们注册的组件只想在一个 Vue 实例中运用,若是照样运用全局注册的体式格局注册组件就显得不太适宜了,这时候,我们就可以或许运用部分注册的体式格局注册组件。在 Vue 实例中,我们可以或许经由历程 components 属性注册仅在以后作用域下可用的组件。

<div id="app">
    <simple-com></simple-com>
</div>

<div id="app2">
    <simple-com></simple-com>
</div>

<template id="local">
    <h4>我是部分注册的组件啊啊啊啊啊啊啊啊</h4>
</template>

<script>
    var vm = new Vue({
        el: '#app',
        data: {}
    });

    var vm2 = new Vue({
        el: '#app2',
        data: {},
        components: {
            'simple-com': {
                template: '#local'
            }
        }
    });
</script>

  可以或许看到,在上面的例子中,部分注册的组件只能在注册的 vm2 实例中完成剖析,当我们在 vm 实例中援用这个组件时,是没法准确剖析这个自界说的组件元素的。

 三、总结

  在本章中,重要引见了组件是什么,和怎样经由历程全局/部分的体式格局注册我们的组件。在我们运用组件的历程当中,很大的可以或许会接触到两个组件之间的数据交互,和怎样为我们的组件设定事宜,鄙人一章中,我们将进一步的进修 Vue 中的组件相干知识点。

 四、参考

  1、Vue.js——60分钟组件疾速入门(上篇)

  2、熟悉Vue组件

  3、Vue 2.0进修条记:组件的运用

  4、初学vue2.0-组件-文档明白条记v1.0

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。