建立全局组件的三种方式

什么是组件?

  组件的出现,就是为了拆分Vue实例的代码量的,可以让咱们以不一样的组件,来划分不一样的功能模块,未来咱们须要什么样的功能,就能够去调用对应的组件就能够了。javascript

组件化和模块化的区别

  • 模块化:是从代码逻辑的角度进行划分的,方便代码分层开发,保证每一个模块功能的职能单一。例如:NodeJS
  • 组件化:是从UI界面的角度进行划分的,前端的组件化,方便UI组件的重用

方式一

  使用 Vue.extend 配合 Vue.component  来进行建立全局组件html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8" />
    <title>独秀不爱秀</title>
</head>
<body>
    <div id="app">
        <!-- 若是要使用组件,直接把组件的名称,以 HTML 标签的形式,引入到页面中 -->
        <mycom1></mycom1>
    </div>

    <script src="./lib/vue-2.4.0.js"></script>

    <script type="text/javascript">
        // 1.1 使用 Vue.extend 来建立全局的 Vue 组件
        const com1 = Vue.extend({
            template: '<h3>这是使用 Vue.extent 建立的组件</h3>'// 经过 template 属性,指定组件要展现的 HTML 结构
        });
        // 1.2 使用 Vue.component('组件的名称', 建立出来的组件模板对象)
        // Vue.component('myCom1', com1);
        // 若是使用 Vue.component 定义全局组件的时候,组件名使用了 驼峰命名,则
        // 在引用的时候,须要把大写字符改成小写字符,同时,两个单词链接使用 -
        Vue.component('mycom1', com1);

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

固然,方式一也能够直接将第一步骤省略,直接:前端

Vue.component('mycom1', Vue.extend({
        template: '<h3>这是使用 Vue.extend 建立的组件</h3>'
}));

方式二

  直接使用 Vue.component 建立组件(其实就是在方式一的基础上更加省略而已)vue

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8" />
    <title>独秀不爱秀</title>
</head>

<body>
    <div id="app">
        <mycom2></mycom2>
    </div>

    <script src="./lib/vue-2.4.0.js"></script>

    <script type="text/javascript">
        /**
        * 2. 直接使用 Vue.component 建立组件
        * @param1  {String}  组件的名称
        * @param2  {Object}  组件模板对象
        */        
        Vue.component('mycom2', {
            // 注意:不管是哪一种方式建立出来的组件,组件的模板中必须有且只有一个惟一的根元素
            template: '<div><h1>这是直接用 Vue.component 建立的组件</h1><span>123</span></div>'
        });

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

</html>

方式三

  在 方式二的基础上将第二个参数中的HTML代码结构,替换为一个 ID:java

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8" />
    <title>独秀不爱秀</title>
</head>

<body>
    <div id="app">
        <mycom3></mycom3>
    </div>


    <!-- 在被控制的 #APP 外面,使用 template 元素定义组件的模板结构 -->
    <template id="tmpl">
        <div>
            <h1>这是经过 template 元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮</h1>
            <h3>不错,好用</h3>
        </div>
    </template>

    <script src="./lib/vue-2.4.0.js"></script>

    <script type="text/javascript">
        Vue.component('mycom3', {
            template: '#tmpl'
        });

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

</html>
相关文章
相关标签/搜索