Vue组件系统

目录:

  Vue组件系统之全局组件的注册

  Vue组件系统之组件的复用

  Vue组价系统之局部组件的注册

  Vue组件系统之父子组件的通信

  Vue组件系统之子父组件的通信

  Vue组件系统之混入(mixin)

  Vue组件系统之插槽<slot></slot>

  Vue组件系统之具名插槽

  

Vue组件系统之全局组件的注册

<div id=‘app‘>    <global-component></global-component></div>

<script>    // 注册    Vue.component(        // 第一个是组件名称  第二个object        "global-component", {            // 组件内容  抱一个div-单个根元素            template: `<div><h3>{{ db }}</h3></div>`,            // data必须是函数            data(){                // return中写数据                return {                    db: ‘hello‘,                }            }        }    );        new Vue({        el: ‘#app‘,        // template: `<global-component></global-component>`    })</script>
<div id=‘app‘>

</div>

<script>    // 注册组件    Vue.component(        // 第一个是组件名称  第二个object        "global-component", {            // 组件内容  抱一个div-单个根元素,包在app这个div中            template: `<div><h3>{{ db }}</h3></div>`,            // data必须是函数            data(){                // return中写数据                return {                    db: ‘hello‘,                }            }        }    );        new Vue({        el: ‘#app‘,        // 根元素会替换div        template: `<global-component></global-component>`    })</script>

全局组件

// 总结Vue.component(        // 第一个是组件名称  第二个object        "global-component", {            // 组件内容  抱一个div-单个根元素,包在app这个div中            template: `<div><h3>{{ db }}</h3></div>`,            // data必须是函数            data(){                // return中写数据                return {                    db: ‘hello‘,                },            computed: {},            watch: {},            methods: {},            }        }    );?new Vue({        el: ‘#app‘,        // 根元素会替换div        template: `<global-component></global-component>`    })?// data 必须是函数// 没有属性

组件系统之组件的复用

<div id=‘app‘>    <global-component></global-component>    <global-component></global-component>    <global-component></global-component></div>

<script>    // 注册    Vue.component(        // 第一个是组件名称  第二个object        "global-component", {            // 组件内容  抱一个div-单个根元素            template: `<div><h3>{{ db }}</h3></div>`,            // data必须是函数            data(){                // return中写数据                return {                    db: ‘hello‘,                }            }        }    );        new Vue({        el: ‘#app‘,            })</script>

组价系统之局部组件的注册

<div id=‘app‘>    <app-header></app-header>   </div>

<script>    let Header = {        template: `<div><h3>{{ db }}</h3></div>`,        data(){            return {                    db: ‘hello‘,                }        },        computed: {},    };        new Vue({        el: ‘#app‘,        template: `<app-header></app-header>`,        components: {            ‘app-header‘: Header        }    })</script>
<div id=‘app‘>    <!--<App></App>-->   </div>

<script>    let Header = {        template: `<div><h3>{{ db }}</h3></div>`,        data(){            return {                    db: ‘hello‘,                }        },        computed: {},        // ...    };    // 在入口组件中注册写的局部组件    let App = {        template: `            <div>                <app-header></app-header>            </div>        `,        components: {            ‘app-header‘: Header        },        // 组件的私有数据        data(){},    };    // 根实例    new Vue({        el: ‘#app‘,        // 作为根被渲染        template: `<App></App>`,        components: {            // App:App,            App,        }    })</script>

局部组件

- 总结?创建组件    创建局部组件,起始就是创建一个JavaScript object    let Header = {        template: `<div><h3>{{ db }}</h3></div>`,        data(){            return {                    db: ‘hello‘,                }        },        computed: {},    };注册组件

   new Vue({        el: ‘#app‘,        template: `<app-header></app-header>`,        components: {            ‘app-header‘: Header        }    })?组件可以嵌套使用?

Vue组件系统之父子组件的通信

<div id=‘app‘>   </div>

<script>    // 子    let Header = {        template: `<div><h3>{{ db }}</h3><h3>{{ fData }}</h3><</div>`,        data(){            return {                    db: ‘hello‘,                }        },        // 接收父亲传来的数据        props:[‘fData‘],        computed: {},        // ...    };    // 在入口组件中注册写的局部组件    // 父    let App = {        template: `            <div>                <app-header v-bind:fData="fatherData"></app-header>            </div>        `,        components: {            ‘app-header‘: Header        },        // 组件的私有数据        data(){            return {fatherData: 0,}        },    };    // 根实例    new Vue({        el: ‘#app‘,        // 作为根被渲染        template: `<App></App>`,        components: {            // App:App,            App,        }    })</script>

Vue组件系统之子父组件的通信

<div id=‘app‘></dic>?<script>    // 子    let Header = {        template: `<div>                 <button @click=‘sonClick‘>点击改变字体大小</button>            </div>`,        methods: {            sonClick: function(){                // 儿子的的行为传给父亲                this.$emit("change-size", 0.1)            }          },        computed: {},        // ...    };    // 父    let App = {        template: `            <div>                <span :style="{ fontSize: postFontSize + ‘em‘ }">我是字体</span>                <app-header v-on:change-size="fatherClick"></app-header>            </div>        `,        components: {            ‘app-header‘: Header        },        // 组件的私有数据        data(){            return {                postFontSize: 1,            }        },        methods: {            // 自己定义的change-size事件,一直在监听,等着儿子传来的信息            fatherClick: function(value){                this.postFontSize += value;            }        }    };    // 根实例    new Vue({        el: ‘#app‘,        // 作为根被渲染        template: `<App></App>`,        components: {            // App:App,            App,        }    })    </script>

Vue组件系统之混入(mixin)

<div id=‘app‘></dic>        <my-header></my-header>        <p></p>        <my-app></my-app><script>    let Header = {        template: `<div>                 <button @click=‘show(‘xxx‘)‘>点击显示xxx来了</button>                <button @click=‘hide(‘xxx‘)‘>点击显示xxx去了</button>            </div>`,        methods: {            show: function(name){                console.log(name+‘来了‘);            },            hide: function(name){                console.log(name+‘来了‘);            },        },    };    let App = {        template: `            <div>                <button @mouseenter=‘show(‘000‘)‘>点击显示000来了</button>                <button @mouseleve=‘hide(‘000‘)‘>点击显示000去了</button>            </div>        `,        methods: {            show: function(name){                console.log(name+‘来了‘);            },            hide: function(name){                console.log(name+‘来了‘);            },        }    };    // 根实例    new Vue({        el: ‘#app‘,        components: {            "my-header": Header,            "my-app": App,        }    })    </script>
<div id=‘app‘></dic>?<script>    let mixs = {        methods:{            show: function(name){                    console.log(name+‘来了‘);                },            hide: function(name){                    console.log(name+‘来了‘);                },        }    }    let Header = {        template: `<div>                 <button @click=‘show(‘xxx‘)‘>点击显示xxx来了</button>                <button @click=‘hide(‘xxx‘)‘>点击显示xxx去了</button>            </div>`,        mixins: [mixs],    };    let App = {        template: `            <div>                <button @mouseenter=‘show(‘000‘)‘>点击显示000来了</button>                <button @mouseleve=‘hide(‘000‘)‘>点击显示000去了</button>            </div>        `,        mixins: [mixs],    };    // 根实例    new Vue({        el: ‘#app‘,        components: {            App,        }    })    </script>

Vue组件系统之插槽<slot></slot>

- 内容分发<style>    .box {        width: 50px;        height: 50px;        float: left;    }</style><div id=‘app‘>    <global-component>首页</global-component>    <global-component>免费</global-component>    <global-component>收费</global-component></div>

<script>    // 注册全局组件    Vue.component(        "global-component", {            template: `<div class="box"><slot></slot></div>`,        }    );        new Vue({        el: ‘#app‘,    })</script>

Vue组件系统之具名插槽

<style>    .box {        width: 50px;        height: 50px;        float: left;    }</style><div id=‘app‘>    <global-component>        <div slot=‘home‘>首页</div>        <div slot=‘free‘>免费</div>        <div slot=‘toll‘>收费</div>    </global-component></div>

<script>    // 注册全局组件    Vue.component(        "global-component", {            template: `<div class="box">                    <slot name="home"></slot>                    <slot name="free"></slot>                    <slot name="toll"></slot>                </div>`,        }    );        new Vue({        el: ‘#app‘,    })</script>

原文地址:https://www.cnblogs.com/xiao-xue-di/p/9930068.html

时间: 2024-11-09 06:01:29

Vue组件系统的相关文章

Vue 组件系统

Vue 组件系统 vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 每一个新技术的诞生,都是为了解决特定的问题.组件的出现就是为了解决页面布局等等一系列问题.vue中的组件分为两种,全局组件和局部组件. 一.全局组件的注册 通过Vue.component()创建一个全局组件之后,我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用. <!D

【Vue组件系统】 -- 2019-08-08 18:01:47

目录 全局组件 局部组件 注册 子组件的用法 父子组件的通讯 子父组件的通讯 非父子组件的通讯 混入 插槽 具名插槽 使用组件的注意事项 原文: http://106.13.73.98/__/52/ vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文将详细介绍使用vue.js进行页面布局的强大工具--vue.js组件系统. 每一个新技术的诞生,都是为了解决特定的问题. 组件的出现就是为了解决页面布局等等一系列的问题. Vue中的组件分为两种:==全局

【Vue组件系统】 -- 2019-08-08 18:01:48

目录 全局组件 局部组件 注册 子组件的用法 父子组件的通讯 子父组件的通讯 非父子组件的通讯 混入 插槽 具名插槽 使用组件的注意事项 原文: http://106.13.73.98/__/52/ vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文将详细介绍使用vue.js进行页面布局的强大工具--vue.js组件系统. 每一个新技术的诞生,都是为了解决特定的问题. 组件的出现就是为了解决页面布局等等一系列的问题. Vue中的组件分为两种:==全局

【Vue组件系统】 -- 2019-08-08 20:40:06

目录 全局组件 局部组件 注册 子组件的用法 父子组件的通讯 子父组件的通讯 非父子组件的通讯 混入 插槽 具名插槽 使用组件的注意事项 原文: http://106.13.73.98/__/52/ vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文将详细介绍使用vue.js进行页面布局的强大工具--vue.js组件系统. 每一个新技术的诞生,都是为了解决特定的问题. 组件的出现就是为了解决页面布局等等一系列的问题. Vue中的组件分为两种:==全局

【Vue组件系统】 &#394369;

目录 全局组件 局部组件 注册 子组件的用法 父子组件的通讯 子父组件的通讯 非父子组件的通讯 混入 插槽 具名插槽 使用组件的注意事项 使用组件实现导航栏 原文: http://blog.gqylpy.com/gqy/277 "vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文将详细介绍使用vue.js进行页面布局的强大工具--vue.js组件系统. 每一个新技术的诞生,都是为了解决特定的问题. 组件的出现就是为了解决页面布局等等一系列的问题. V

【Vue】详解Vue组件系统

Vue渲染的两大基础方式 new 一个Vue的实例 这个我们一般会使用在挂载根节点这一初始化操作上: new Vue({ el: '#app' }) 注册组件并使用 通过Vue.component()去注册一个组件,你就可以全局地使用它了,具体体现在每个被new的 Vue 实例/注册组件, 的template选项属性或者对应的DOM模板中,去直接使用 注册组件 全局注册 例如,放在通过new创建的Vue实例当中: Vue.component('my-component', { template:

JS组件系列——又一款MVVM组件:Vue(二:构建自己的Vue组件)

阅读目录 一.为什么组件很重要 二.Vue里面的组件基础知识 1.组件的概念 2.组件原理 3.组件使用 三.封装自己的Component 1.使用Component封装bootstrapTable 2.封装select 3.查看其他Vue框架源码 四.总结 正文 前言:转眼距离上篇 JS组件系列--又一款MVVM组件:Vue(一:30分钟搞定前端增删改查) 已有好几个月了,今天打算将它捡起来,发现好久不用,Vue相关技术点都生疏不少.经过这几个月的时间,Vue的发展也是异常迅猛,不过这好像和博

vue组件的创建

vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例中使用组件吧! 这里有一个Vue组件的示例: Vue.component('Vheader',{ data:function(){ return { } }, template:`<div class="header"> <div class="w"> <

如果你也想写个完整的 Vue 组件项目

1.一个完整的组件项目需要什么? 必要的: 组件构建方式 ( webpack / rollup 之类 ),并提供至少一个主流的输出格式 (ESModule) Demo 及 Demo 源码 文档,可以是 docsify之类的生成的页面,懒点就内嵌在 README 里了 其实上面的除了文档都比较容易做到,除了可能会在构建上踩坑外.那么做到了这些可以上线了吗?是的.不过看一些优秀的库其实还可以做更多的,例如下面的这些: 有就更好了: 一个清晰地 README.md 提供多种构建方式 es/cjs/um