Vue学习系列 -- 组件注册

Posted 躬匠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue学习系列 -- 组件注册相关的知识,希望对你有一定的参考价值。

组件的使用就是为了提高代码的可复用。

组件与Vue实例类似,都要在注册之后才可以使用。注册又分为全局注册和局部注册两种方式,今天我们就先来简单学习一下。

全局注册

注册之后的组件全局任何地方都可以使用,具体使用如下:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Learning Vue.js</title>
</head>

<body>
<div id="app1">
<div>
    <component-demo>
    </component-demo>
</div>
</div>
</body>

<!--这里是以CDN引入的方式加载的vue.js-->
<script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
        Vue.component('component-demo',
            props:["template"],
            template: "<div>This is component demo</div>",
            data: function () 
                return 
                   message : "component data function"
                
            ,
            computed :,
            methods :
        
    );
    var app = new Vue(
        el : "#app1",
        data : 
            message : "component demo"
        
    )
</script>
</html>

有以下需要注意的点:

  • 通过Vue.component()函数调用创建
  • 全局组件的注册需要在vue实例创建之前进行
  • 全局组件的template的DOM结构必须被一个元素包含,否则会造成无法渲染
  • 除了template选项外,组件中还可以像Vue实例那样使用其他的选项,比如data、computed、methods;但是在使用data的过程中,data必须是函数,然后将数据return出去;
  • 引入的组件名称在使用标签时,标签名不能为驼峰命名的形式

局部注册

局部注册是指的注册之后的组件只在局部区域有效(当前父组件内),组件内也可以使用components选项来注册组件,使组件可以嵌套,具体用法如下:

<body>
<div id="app1">
<div>
    <component-demo message="this is parents component data">
    </component-demo>
</div>
</div>
</body>

<!--这里是以CDN引入的方式加载的vue.js-->
<script type="text/javascript" src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
    var app = new Vue(
        el : "#app1",
        components : 
            "component-demo" : 
                template: "<div>message</div>",
                props : ["message"],
                data : function () 
                    return 
                        message : "this is children component data",
                        date : "201905271919"
                    
                
            
        
    )
</script>

注意:

  • 局部组件需要在父组件实例化的时候创建
  • 局部组件只在当前父组件范围内有效

另外,我们这里为了演示的方便,将两个组件放在了一个文件里,实际的项目中很少这样用。

实际中都是分别为一个组件,之后通过import / export来导出/引入,然后再进行全局/局部注册使用的。等后期我们逐渐深入之后会采用。

详细眼尖的同学应该看到了一个特殊的属性:props。而且,实际展示的效果与这个属性是强相关的。没错,这个就是我们下一个小节要说的父子组件之间的通信。

以上是关于Vue学习系列 -- 组件注册的主要内容,如果未能解决你的问题,请参考以下文章

Vue学习系列 -- 自定义指令

Vue详解Vue组件系统 目录

vue 组件属性props,特性驼峰命名,连接线使用

vue组件

vue中vue全局组件的特点

vue-组件component