一、Vue.js组件注册内容

• 全局注册 • 组件基础 • 局部注册

二、全局注册

• 全局注册的组件在注册后可以用于任意实例或组件中。

<body><div id="app"><p>这是p标签</p><my-component></my-component></div><script src="./vue.js"></script><script>// 语法:  Vue.component('my-component',{选项对象});Vue.component('my-component',{template: '<div>这是我们全局注册的组件</div>'})new Vue({el:'#app',data: {}})</script>
</body>

• 注意:全局注册必须设置在根 Vue 实例创建之前。

三、组件基础

• 本质上,组件是可复用的 Vue 实例,所以它们可与 new Vue 接收相同的选项,例如 data、methods 以及生命周期钩子等。
• 仅有的例外是像 el 这样根实例特有的选项。

组件基础主要学习内容:• 组件命名规则 • template 选项 • data 选项

3.1组件命名规则

• 组件具有两种命名规则:
• kebab-case:'my-component’  驼峰命名法
• PascalCase:'MyComponent'  帕斯卡命名法

• 注意:无论采用哪种命名方式,在 DOM 中都只有 kebab-case 可以使用。

示例:我们再视图中使用组件的时候,不能够使用帕斯卡命名法去书写,否则会报错。

<body><div id="app"><my-com-a></my-com-a><!-- <MyComA></MyComA> --><my-com-b></my-com-b><!-- <MyComB></MyComB> --></div><script src="../01.TodoMVC/todomvc-app-template/node_modules/vue/dist/vue.js"></script><script>//kebab-case进行注册 (驼峰命名法)Vue.component('my-com-a', {template: '<div>这是a组件的内容</div>'})//pascalCase进行注册 (帕斯卡命名法)Vue.component('MyComB', {template: '<div>这是b组件的内容</div>'})new Vue({el: '#app'})</script>
</body>

3.2template选项

• template 选项用于设置组件的结构,最终被引入根实例或其他组件中。

• 注意:组件必须只有一个根元素。如果出现同级的根元素就会出现报错情况。

<body><!-- 挂载元素 --><div id="app"><my-com-a></my-com-a></div><script src="../01.TodoMVC/todomvc-app-template/node_modules/vue/dist/vue.js"></script><script>Vue.component('MyComA', {template: `<div><h1>组件 A 的标题内容</h1></div><div><h1>组件 A 的标题内容</h1></div>`});new Vue({el: '#app'})</script>
</body>

3.3data选项

• data 选项用于存储组件的数据,与根实例不同,组件的 data 选项必须为函数,数据设置在返回值对象中。

<body><!-- 挂载元素 --><div id="app"><my-com-a></my-com-a><my-com-a></my-com-a><my-com-a></my-com-a></div><script src="../01.TodoMVC/todomvc-app-template/node_modules/vue/dist/vue.js"></script><script>Vue.component('MyComA',{template: `<div><h3> {{ title }} </h3><p>  {{content}}  </p></div>`,// data() {} 简写形式data: function () {return {title: '这是组件A的标题',content: '这是组件A的内容'}}});new Vue({el: '#app',data: {}})</script>
</body>

data参数使用函数的实现方式,是为了确保每个组件实例可以维护一份被返回对象的独立的拷贝,不会相互影响。

通过如下使用DevTools插件,我们可以选择一个组件进行数据修改,发现我们多次调用的组件,再修改的时候,只会更改自身选中的组件,其他的同名的组件不会随之变化,受到影响。

四、局部注册

• 局部注册的组件只能用在当前实例或组件中。

<body><div id="app"><my-com-a></my-com-a><my-com-b></my-com-b></div><script src="vue.js"></script><script>new Vue({el: '#app',data: {},components: {'my-com-a': {templata: `<div><h3>{{ title }}</h3><p>{{ content }}</p></div>`,data: function () {return {title: '这是组件A的标题',content: '这是组件A的内容'}}},'my-com-b': {templata: `<div><h3>{{ title }}</h3><p>{{ content }}</p></div>`,data: function () {return {title: '这是组件B的标题',content: '这是组件B的内容'}}}}})</script>
</body>

单独配置组件的选项对象:

<body><div id="app"><my-com-a></my-com-a><my-com-b></my-com-b></div><script src="vue.js"></script><script>let MyComA = {templata: `<div><h3>{{ title }}</h3><p>{{ content }}</p></div>`,data: function () {return {title: '这是组件A的标题',content: '这是组件A的内容'}}};let MyComB =  {templata: `<div><h3>{{ title }}</h3><p>{{ content }}</p></div>`,data: function () {return {title: '这是组件B的标题',content: '这是组件B的内容'}}};new Vue({el: '#app',data: {},components: {'my-com-a': MyComA,'my-com-b': MyComB}})</script>
</body>

ES6 的对象属性简写:

new Vue({el: '#app',data: {},components: {MyComA,MyComB}})

(24)Vue.js组件—组件注册相关推荐

  1. Vue.js 定义组件模板的七种方式

    转载自  Vue.js 定义组件模板的七种方式 在 Vue 中定义一个组件模板,至少有七种不同的方式(或许还有其它我不知道的方式): 字符串 模板字面量 x-template 内联模板 render ...

  2. 360奇舞团钟恒:选用Vue.js进行组件化开发,我们遇到了哪些坑?

    责编:陈秋歌,关注前端开发领域,寻求报道或者投稿请发邮件chenqg#csdn.net. 欢迎加入"CSDN前端开发者"微信群,参与热点.难点技术交流.请加群主微信「Rachel_ ...

  3. Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...

    记得点击文章末尾的"阅读原文"查看哟~ 下面先一起看下本周的摘要吧~ 想了解老用户如何参与阿里云双十一1折拼团特惠主机的,可以看第二条推送,文中提供了两种方法~,一起看看本周有哪些 ...

  4. Vue.js教程-组件化开发

    Vue.js教程-组件化开发 前言 Vue组件化 什么是组件化 Vue单页面开发的解释 组件化思想 组件的使用 原理 实际开发中的使用-父子组件 父子组件传递数据 父传子-props用法 子传父-th ...

  5. 两个读书笔记:springboot+vue.js分布式组件全栈开发训练营 + 大数据开发基础

    (springboot+vue.js分布式组件全栈开发训练营原文在notion中, 大数据开发在思维导图中, 这个博客只是保存, 无法阅读. ) what is different between s ...

  6. Vue.js分页组件实现:diVuePagination

    为什么80%的码农都做不了架构师?>>>    完整版下载地址:https://gitee.com/dgx/diVuePagination 完整版演示地址:http://dgx.gi ...

  7. Vue.js说说组件

    什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能.在有些情况下,组件也可以是原生HTM ...

  8. [Vue.js] 深入 -- 组件化开发

    组件化开发思想 现实中的组件化思想体现 标准 分治 重用 组合 组件注册 全局组件注册语法 Vue.component(组件名称,{data:组件数据,template:组件模板内容 }) 组件用法 ...

  9. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

  10. 为什么要用Vue.js的组件化开发

    那么什么是Vue组件呢?它是vue.js最强大的功能之一,是可扩展的html元素,是封装可重用的代码,同时也是Vue实例,可以接受相同的选项对象(除了一些根级特有的选项) 并提供相同的生命周期钩子.这 ...

最新文章

  1. Linux驱动开发环境配置(内核源码树构造)
  2. [云炬创业学笔记]第二章决定成为创业者测试4
  3. linux通信--信号量
  4. 实战:将企业域名解析委派给企业DNS服务器
  5. PHP配置文件详解php.ini
  6. 怎么改变asp.net中.sln文件的默认生成路径
  7. bcp+Sql语句抽取数据导出
  8. Java继承关系的类的初始化和实例化的执行顺序
  9. 2021年中国余热回收锅炉市场趋势报告、技术动态创新及2027年市场预测
  10. 接口自动化-接口测试初介
  11. 用eclipse调用远程webservice生成客户端代码
  12. 黑客第二课:脱屌第一步 —— Vim Fundamentals
  13. wincc安装信息服务器,WinCC 7.4软件不会安装?怎么授权?一文教会你
  14. 关于MSN群 创建MSN群 使用MSN群
  15. JMF(java media framework)综述
  16. 【上课课件整理复习】第六章 网页数据的采集(1)
  17. 计算机网络DNS域名解析协议详解
  18. 15-top命令详解
  19. ARFoundation☀️ 八、SARF:ARFoundation可视化插件
  20. 平板N710无限重启解决办法——包括恢复出厂设置的办法

热门文章

  1. ReactNative 踩坑之 iOS 原生组件
  2. 使用 CocoaPods 对公有库开源和私有库组件
  3. ubuntu配置安装KBEngine服务器
  4. 使用lambda去重、map排序、按任意时间间隔(小时、半小时、分钟)进行结果统计
  5. 如何部署和搭建测试log4j 2
  6. Mybatis-Plus 使用自定义注入器后,查询条件中不再添加逻辑删除字段限定条件
  7. 创建虚拟机、安装CentOS 7
  8. 24.Forbidden
  9. Agent编程平台的实现
  10. 经典案例之MouseJack