2.Vue组件
2.组件
2.1.模块与组件
2.1.1.模块
可以向外提供某一个功能的js
程序,一般为一个js
文件
作用:js
可以复用,可以简化js
的编写,提高js
的运行效率。
2.1.2.组件
实现某一个功能的效果代码集合,这个集合包含很多,比如html
、css
、js
等
作用:复用编码,简化项目的编码,提高项目的运行效率
2.1.3.模块化与组件化
当应用中的js
都以模块来编写的, 那这个应用就是一个模块化的应用。
当应用中的功能都是以组件的方式来编写的, 那这个应用就是一个组件化的应用,。
2.2.非单文件组件
指将vue
组件写在html
代码中的组件
效果图
他们两个的student
组件互不影响,即使改了上面的age
,但是下面的还是原来的数据
代码示例
总结
- 定义组件
Vue.extend(options)
,其中options
和new Vue(Options)
的几乎一致,不同点如下:el
不用写,因为最终所有的 组件都要经过一个VM
的管理,由VM
中的el
决定服务哪个容器。data
必须写成函数,因为可以避免组件被复用时,数据存在引用关系
。
- 备注:使用
template
可以配置组件的结构
- 注册组件
- 局部注册:靠
new Vue
中的components
选项。 - 全局注册:靠
Vue.component('组件名',组件标签名)
- 注意:全局注册中的
component
不带s
- 局部注册:靠
- 使用组件:直接使用标签即可,标签名为组件标签名
注意:将new Vue()
写在Vue.component
的前面会无法显示,必须写在他的后面
2.3.注意点
关于组件名
- 一个单词组成
- 第一种写法(首字母小写): school
- 第二种写法(首字母大写): School
- 多个单词组成
- 第一种写法(kebab-case命名): my-school
- 第二种写法(CamelCase命名): MySchool (需要Vue脚手架支持)
- 备注
- 组件名尽可能回避HTML中已有的元素名称,例如: h2、H2都不行。
- 可以使用name配置项指定组件在开发者工具中呈现的名字。
关于组件标签
- 第一种写法:
<school></school>
- 第二种写法:
<school/>
- 备注:不用使用脚手架时,
<school/>
会导致后续组件不能渲染。
一个简写方式:const school = Vue.extend(options)
可简写为: const school = options
2.4.组件嵌套
效果图
代码示例
使用方法
- 定义学生组件
- 定义学校组件,在学校组件中添加
components
方法,将学生组件嵌套(注册)进来,学生组件与学校组件是父子关系 - 定义hello组件,hello组件与学校组件是平级关系
- 定义APP组件,这个组件在所有组件之上,仅在VM之下,所以将学校组件和hello组件嵌套(注册)进来
- 注册组件,此时所有的组件都被app组件进行管理,所以只需要注册app组件即可
2.5.VueComponent
组件本质:是一个名为VueComponent
的构造函数,且不是程序员定义的,是Vue.extend
生成的。
我们只需要写<school/>
或<school></school>
,Vue
解析时会帮我们创建组件的实例对象,即Vue
帮我们执行的 new VueComponent(options)
。
特别注意: 每次调用Vue.extend
,返回的都是一个全新的VueComponent
!!!!
关于this指向
- 组件配置中:
data
、methods
、watch
、computed
,它们函数中的this
均是VueComponent
实例对象 - new Vue(options)配置中:
data
、methods
、watch
、computed
,它们函数中的this
均是Vue
实例对象
VueComponent的
实例对象,以后简称vc
(组件实例对象
) 。
Vue
的实例对象,以后简称vm
。
VM与VC的区别:除了上面2.2
中的以外,最大的区别就是VC
可以复用
2.6.单文件组件
各个文件的作用
-
main.js:注册
App组件
以及创建vue实例
-
app.vue:一切组件的爹,所有组件都有他进行管理
-
其他的.vue文件:就是普通的组件,里面可以编写某一个功能的
脚本
代码,css
代码,html
代码等school组件 student组件 -
index.html:页面的开始
在下一个章节脚手架中才可运行使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?