08Vue创建组件的方法

2018-05-14  本文已影响0人  个人不完美

Vue.js中创建组件主要有三个步骤:创建组件构造器,注册组件以及使用组件。

创建组件构造器

创建组件构造器的方法很简单,只需要以下语句即可:
var MyCompontent=Vue.extend({...});
然而这个时候还不能直接使用组件,需要把组件注册到应用中。

注册组件

Vue.js提供了两种注册组件的方式,分别为全局注册和局部注册,下边分别介绍:

全局注册:需要确保在根实例初始化之前注册,这样才能使组件在任意实例中都可以使用。注册方式如下:
Vue.component('my-components',myComponent);//这句代码一定要申明在new Vue({...});之前
注册过程中也指定了组件的HTML标签。
局部注册:限定了组件只能在被注册的组件中使用,而无法在其他组件中使用。

使用组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue组件(组件之间可以随意嵌套)</title>
    <script src="./js/vue.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function () {
            //1.组件构造器
            var myComponent = Vue.extend({
                template: '<h3>这是一个利用组件构造器完成的组件</h3>'
            });
            Vue.component('hello', myComponent);
            //2.第二种方法构建组件的方法(字符串模板)
            Vue.component('my-hello', {
                template: '<h4>这是第二种方法完成的组件</h4>'
            });
            var app = new Vue({
                el: "#app",
                data: {
                    msg: 'hello Vue!',
                },
                components: {
                    //3.组件的第三种写法 局部组件的写法 只能针对当前的vue实例
                    'my-components': {
                        template: '<h5>组件的第三种写法 局部组件的写法</h5>'
                    },
                    'my-list': {
                        template: '#list',
                        //在组件里面放入数据
                        data(){
                            return{
                                title:'标题',
                                item:[1,2,3,4,5]
                            }
                        }
                    },
                    'my-adress':{
                        template:'#myAdress',
                        data(){
                          //在组件里面写函数需要用return返回
                            return{

                                myAdress:'test111'
                            }
                        }
                    }
                }
            });
        }
    </script>
    <!-- <template id="list">
        <div>
            <h3>组件的另一种写法</h3>
            <ul>
                <li v-for="v in item">{{v}}</li>
            </ul>
        </div>
    </template> -->
    <template id="myAdress">
        <p>{{myAdress}}</p>
    </template>
</head>
<body>
    <div id="app">
        <!-- 组件调用方法 -->
        <hello></hello>
        <my-hello></my-hello>
        <my-components></my-components>
        <my-list></my-list>
    </div>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读