vue第四天
1. vue组件
什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可。
组件化和模块化的不同:
模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一
组件化:是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用
2.全局组件定义的四种方式
1.使用 Vue.extend 配合 Vue.component 方法:
var login = Vue.extend({ template: '<h1>登录</h1>' }); Vue.component('login', login);
2.直接使用 Vue.component 方法
Vue.component('register', { template: '<h1>注册</h1>' });
3.将模板字符串,定义到script标签中:
<script id="tmpl" type="x-template"> <div><a href="#">登录</a> | <a href="#">注册</a></div> </script>
同时,需要使用 Vue.component 来定义组件:
Vue.component('account', { template: '#tmpl' });
4.将模板字符串,定义到template标签中:
< template id="tmpl"> <div><a href="#">登录</a> | <a href="#">注册</a></div> </ template >
同时,需要使用 Vue.component 来定义组件:
Vue.component('account', { template: '#tmpl' });
3.组件中展示数据和响应事件
在组件中,data需要被定义为一个方法
Vue.component('account', { template: '#tmpl', data() { return { msg: '大家好!' } }, methods:{ login(){ alert('点击了登录按钮'); } } });
在子组件中,如果将模板字符串,定义到了script标签中,那么,要访问子组件身上的data
属性中的值,需要使用this
来访问
4.使用components属性定义局部子组件
<script> // 创建 Vue 实例,得到 ViewModel var vm = new Vue({ el: '#app', data: {}, methods: {}, components: { // 定义子组件 account: { // account 组件 template: '<div><h1>这是Account组件{{name}}</h1><login></login></div>', // 在这里使用定义的子组件 components: { // 定义子组件的子组件 login: { // login 组件 template: "<h3>这是登录组件</h3>" } } } } }); </script>
5.slot插槽
什么是插槽?插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签。
插槽的使用:
在子组件中放入一个占位符
<template>
<div>
<h1>今天天气很好</h1>
<slot></slot>
</div>
</template>
在父组件中给这个占位符填充
6.插槽的使用 - 具名插槽
描述:具名插槽其实就是给插槽取个名字。一个子组件可以放多个插槽,而且可以放在不同的地方,而父组件填充内容时,可以根据这个名字把内容填充到对应插槽中。
子组件的代码,设置了两个插槽
<template> <h2> <slot name="header"></slot> <slot name="footer"></slot> </h2> </template>
父组件填充内容, 父组件通过 v-slot:[name] 的方式指定到对应的插槽中
<template v-slot:footer> <div> </div> </template>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构