zoukankan      html  css  js  c++  java
  • 23. VUE 组件化开发

    什么是组件化?

    如果将一个复杂的问题,拆分成很多个可以处理的小问 题,再将其放在整体当中,你会发现大的问题也会迎刃 而解,那么组件化开发也是类似于这样的思想:

    如果我们将一个页面中所有的处理逻辑全部放在一 起,处理起来就会变得非常复杂,而且不利于后续 的管理以及扩展。但如果,我们将一个页面拆分成一个个小的功能块, 每个功能块完成属于自己这部分独立的功能,那么 之后整个页面的管理和维护就变得非常容易了

    组件化是Vue.js中的重要思想

    它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用。 

    任何的应用都会被抽象成一颗组件树。

    有了组件化的思想,我们在之后的开发中就要充分的利用它。

    尽可能的将页面拆分成一个个小的、可复用的组件。

    这样让我们的代码更加方便组织和管理,并且扩展性也更强。


    注册组件的基本步骤

    组件的使用分成三个步骤:

    1 创建组件构造器 2 注册组件 3 使用组件。

    就是类似于这样。

    实现:

        <div id="app">
    <!--    这个m-title 是我自己定义的,可以用多次    -->
            <m-title></m-title>
        </div>
    
    <!-- 在外面无效 我也不知道为什么 学到后面会讲解 -->
        <m-title></m-title>
    
    
    
    <script src="js/vue.js"></script>
    <script>
    
        <!-- 1.创建组件构造器 -->
         const test = Vue.extend({
             template:`
                <div>
                <h2>我是h2</h2>
    </div>
             `
         })
        
         //注册组件
         Vue.component('m-title',test)
        
        const app = new Vue({
            el:"#app",
            data:{
                s1:"a"
            }
        })
    
    </script>

    注意!  内个ES6写法写内个代码是 `` 不是单引号,是波浪线内个键盘 . 

    老师说  可移植性很高 甚至可以跨工程


    其实 上面的 在VUE2.x之后就看不到了,上面的写法是最原始的,而且上面的是 用的是 “全局组件”

    全局组件 和 局部组件:

    如果有两个Vue 实例,那么我注册的m-title 这个组件是全局的话 ,在那个实例都可以用,例如:

        <div id="app">
            我是app1 因为m-title是全局组件 大家都可以直接用
            <m-title></m-title>
            <hr>
        </div>
    
    <div id="app2">
        我是app2 因为m-title是全局组件 大家都可以直接用
        <m-title></m-title>
        <hr>
    
    </div>
    
    
    <script src="js/vue.js"></script>
    <script>
    
         const test = Vue.extend({
             template:`
                <div>
                <h2>我是h2</h2>
                <p>我是标题</p>
                </div>
             `
         })
    
         //注册组件
         Vue.component('m-title',test)
    
        const app = new Vue({
            el:"#app",
        })
    
         const app2 = new Vue({
             el:"#app2",
         })
    
    </script>

    即:

    当我们通过调用Vue.component()注册组件时,组件的注册是全局的 这意味着该组件可以在任意Vue示例下使用。

    如果我们注册的组件是挂载在某个实例中, 那么就是一个局部组件:

    注册局部组件:

    <body>
    
        <div id="app">
            APP
            <cpn></cpn>
            <hr>
        </div>
    
    <div id="app2">
        APP2
        <cpn></cpn> <!--这个在这里写没用 因为cpn是局部组件 -->
        <hr>
    </div>
    
    
    <script src="js/vue.js"></script>
    <script>
    
            //创建组件构造器
         const test = Vue.extend({
             template:`
                <div>
                <h2>我是h2</h2>
                <p>我是标题</p>
                </div>
             `
         })
    
         /** 注册全局组件 【此处已注释】
         Vue.component('m-title',test)*/
    
        const app = new Vue({
            el:"#app",
    
            /***用components 来注册挂成为局部组件【cpn只能在app区域中可用】
            cpn是key(标签名)
            test是注册的组件*/
            components:{
                'cpn':test
            }
        })
    
         const app2 = new Vue({
             el:"#app2"
         })
    
    </script>
    
    </body>

    还有一种写法貌似直接写进去的。

    其实你可以去Vue官网LookLook

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14999402.html

  • 相关阅读:
    洛谷 P2979 [USACO10JAN]奶酪塔Cheese Towers
    celery -2
    【express】
    ↗☻【HTML5秘籍 #BOOK#】第8章 使用CSS3
    -_-#【Dom Ready / Dom Load】
    【jQuery】
    ♫【Avalon】
    【兼容】IE下PNG色差
    ↗☻【HTML5秘籍 #BOOK#】第4章 Web表单
    洛谷—— P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14999402.html
Copyright © 2011-2022 走看看