vue怎么注册公共组件(解读Vue组件注册方式)
vue怎么注册公共组件
解读Vue组件注册方式目录
- 概述
- 1 、全局注册
- 2 、局部注册
- 3 、模块系统中局部注册
组件化的概念让前端页面开发有了更清晰的结构。
Vue 中的组件就是一个 Vue 的实例对象。因此,Vue 组件的构造选项和 new Vue() 方法构造 Vue 实例的构造选项是一样的,其可接收的构造选项都是一样的。除了 el 这样 根实例 特有的选项。但是,Vue 组件必须得是可以复用的,因此,就必须要求构造选项中的 data 选项必须是一个函数,该函数返回一个对象。
为什么 data 选项是个返回对象的函数就可以保证组件的可复用性呢?
因为无论是 new Vue() 的方式还是定义 Vue组件 的方式创建一个 Vue 实例,其执行的操作都是将构造选项中的各属性值直接赋值给新创建的 Vue 实例对象。组件复用就是 Vue 使用 相同的构造选项 构造出多个同名不同地址的 Vue 实例对象。如果 Vue 组件定义时的构造选项中的 data 选项是一个对象,那么在组件复用时,多个组件就会共用一个 data 数据对象,因为是直接将 data 对象的地址赋值给组件的 Vue 实例的。但如果组件定义时的 data 选项是一个函数的话,那么 Vue 根据构造选项创建组件时会执行该函数从而得到一个对象。这样一来,每次创建 Vue 实例时的 data 对象都是重新生成的,因此,多个组件都有各自的 data 数据对象,不会相互影响。
实际上,在组件注册时是在定义组件的构造选项,在组件使用时才真正创建对应的 Vue 组件实例。
1 、全局注册全局注册的组件可以在 Vue 根实例和所有的子组件中使用。注册入口为Vue.component()函数,一次注册,随时使用,注册方式如下:
Vue.component('my-component-name',{ options })
示例如下:
//main.js //此示例是在 vue-cli 创建的项目,默认是非完整版vue,无法用 template 选项,因此使用 render 函数写组件内容。 Vue.component('all-test',{ data(){ return { x: '我是全局组件' } }, render(h){ return h('li',this.x) } }) //全局注册的组件直接使用即可 //App.vue <template> <li id="app"> <all-test /> </li> </template>
局部注册是通过一个普通的 JavaScript 对象来定义组件。然后组件的命名和注册入口是在 Vue实例 构造选项中的 components 选项。
let component = { options } //new Vue 创建的根元素 Vue 实例 new Vue({ el: '#app' components: { 'my-component-name': component } }) //或注册 Vue组件 创建的 Vue 实例 export default { components: { 'my-component-name': component } }
示例如下:
//App.vue <template> <li id="app"> <all-test /> <component-a /> <component-b /> </li> </template> <script> let ComponentA = { data(){ return { x: '我是局部组件 A' } }, render(h){ return h('li',this.x) } } export default { name: 'App', components: { 'component-a': ComponentA, 'component-b': { data(){ return { x: '我是局部组件 B' } }, render(h){ return h('li',this.x) } } } } </script>
在使用了诸如 Babel 和 webpack 的模块系统中可以使用 import 和 export 的方式单独导入组件的构造选项对象 或者 导入对应构造选项的 *.vue 文件。
//c.js export default { data(){ return { x: '我是 c.js 文件单独导出的组件构造选项对象' } }, render(h){ return h('li',this.x) } } //D.vue <template> <li> {{x}} </li> </template> <script> export default { data(){ return { x: '我是 D.vue 文件导出的组件' } } } </script> //App.vue <template> <li id="app"> <C /> <D /> </li> </template> import C from './c.js' import D from './components/D.vue' export default { name: 'App', components: { C, D } } </script>
以上就是解读Vue组件注册方式的详细内容,更多关于Vue组件注册方式的资料请关注开心学习网其它相关文章!
- vue设置div大小(Vue实现div滚轮放大缩小)
- vue虚拟滚动条(vue轻松实现虚拟滚动的示例代码)
- vue怎么接收后台的数据(Vue封装全局toast组件的完整实例)
- vue3 composition api用法(vue3中provide和inject的使用)
- 使用vue组件开发项目(Vue记事本实例详解)
- vue代码统计(Vue实现计数器案例)
- vue组件滚动加载教程(Vue组件封装上传图片和视频的示例代码)
- vuex中action的值怎么接(vuex中Getter的用法详解)
- vue轮播图代码(vue实现无缝轮播效果跑马灯)
- 使用vue独立开发组件(vue单文件组件的实现)
- vue组件轮播(vue+rem自定义轮播图效果)
- vue3.0怎么往标签填数据(Vue3.0写自定义指令的简单步骤记录)
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- vue开发的购物车0.1加0.2(vue实现可改变购物数量的购物车)
- vue-router起步教程交流(vue3使用vue-router的完整步骤记录)
- vue3 响应式的实现过程(Vue3.x使用mitt.js进行组件通信)
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
热门推荐
- phplaravel快速开发平台(laravel框架实现去掉URL中index.php的方法)
- python编写计算机病毒教程(Python告诉你木马程序的键盘记录原理)
- html5添加背景(Html5实现首页动态视频背景的示例代码)
- C#获取页面的HTML
- pandas怎么写入csv文件(Pandas读写CSV文件的方法示例)
- docker镜像和容器(使用docker build kit构建树莓派上可用的Docker镜像)
- python获取特定时间日期的数据(Python提取特定时间段内数据的方法实例)
- css不显示滚动条设置(css隐藏移动端滚动条并且ios上平滑滚动的方法)
- vs远程调试
- redhat安装教程交流(安装redhat 8.0红帽系统的图文教程小白必备)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9