Vue.js 是一款流行的前端框架,它的核心特性之一就是组件化。组件是Vue应用程序的基本构建块,可以被复用,降低了代码复杂性并提高了可维护性。让我们深入了解一下Vue组件的基础知识。 ### 组件概念 Vue组件是可复用的代码模块,它们有自己的视图和数据逻辑。组件可以嵌套并在不同组件之间重用。每个组件都有自己的`template`、`data`、`methods`等属性,允许我们构建复杂的用户界面。 ### 局部组件与全局组件 #### 局部组件 局部组件是在特定Vue实例(或父组件)中定义的,只在这个实例内部可用。定义局部组件的步骤如下: 1. **声明组件**:创建一个对象,包含组件的配置,如`template`、`data`等。 2. **挂载组件**:将组件添加到Vue实例的`components`选项中。 3. **使用组件**:在模板中通过组件标签引用它。 例如: ```javascript var MyComponent = { template: '<div>我是局部组件</div>', data: function () { return {} } } new Vue({ el: '#app', components: { MyComponent } }); ``` #### 全局组件 全局组件是在Vue实例创建之前,通过`Vue.component()`方法注册的,可以在整个应用中任何地方使用。注册全局组件的语法如下: ```javascript Vue.component('my-global-component', { template: '<div>我是全局组件</div>' }); ``` ### 父子组件通信 #### 父传子 - 父组件通过`props`将数据传递给子组件,子组件通过在`props`选项中声明接收的属性。 - 在模板中,父组件通过属性绑定(`v-bind`)将数据传递给子组件。 - 子组件中可以通过`this.props`访问这些数据。 例如: ```javascript // 父组件 <ChildComponent :parentMessage="msg"></ChildComponent> // 子组件 Vue.component('ChildComponent', { props: ['parentMessage'], template: '<span>{{ parentMessage }}</span>' }); ``` #### 子传父 - 子组件通过`$emit`触发自定义事件,并可以传递参数。 - 父组件通过监听这个自定义事件来接收数据。 例如: ```javascript // 子组件 <button @click="$emit('childEvent', 'someValue')">触发事件</button> // 父组件 <ChildComponent @childEvent="handleChildEvent"></ChildComponent> // 父组件的方法 methods: { handleChildEvent(value) { console.log(value); // 输出:'someValue' } } ``` ### 数据传递 #### Slot分发内容 - 当需要在全局组件中动态插入内容时,可以使用`slot`。Vue的内置`slot`元素用于承载分发的内容。 - 默认插槽:不指定`name`的`slot`,用于替换组件模板中包含`<slot>`的地方。 - 具名插槽:通过`name`属性指定插槽,允许更精细的控制内容分发。 例如: ```html <!-- 父组件 --> <ChildComponent> <h1 slot="header">头部</h1> <p>主内容</p> <footer slot="footer">底部</footer> </ChildComponent> <!-- 子组件 --> <template> <div> <header><slot name="header"></slot></header> <main><slot></slot></main> <footer><slot name="footer"></slot></footer> </div> </template> ``` ### 过滤器 - 过滤器用于处理数据,例如格式化货币、日期等。 - 可以在组件内声明过滤器,然后在模板中通过管道符`|`使用。 - 过滤器函数必须有返回值。 例如: ```javascript // 定义过滤器 var Content = { filters: { RmbData: function (value) { return '$' + value; } }, template: ` <div> <input type="number" v-model="msg"/> <h2>{{ msg | RmbData }}</h2> </div> `, data() { return { msg: 10 }; } }; ``` ### 生命周期 Vue组件有多个生命周期钩子,允许我们在组件的不同阶段执行逻辑。例如`created`、`mounted`、`updated`等,每个钩子都在特定的时间点执行。 例如: ```javascript var MyComponent = { data() { return { message: 'Hello' } }, mounted() { console.log('组件已挂载') }, updated() { console.log('组件已更新') } } ``` 以上就是Vue组件的基础知识,包括组件的概念、创建、父子组件之间的通信、数据传递以及过滤器和生命周期。理解并熟练掌握这些知识点,能够帮助开发者更好地构建Vue应用程序。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xmind](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 7
- 资源: 979
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- jmeter性能测试-测试 Web 应用程序&测试各种类型的服务,包括数据库、消息队列和其他服务
- Oracle-维护常用SQL语句.pdf
- NX二次开发UF-CURVE-edit-trim-curve 函数介绍
- python课程项目-学生成绩管理系统包括学生、课程、成绩记录等数据的管理和交互
- NX二次开发UF-CURVE-edit-trim 函数介绍
- Acunetix Web漏洞扫描工具
- NX二次开发UF-CURVE-edit-spline-thru-pts 函数介绍
- Python应用领域和职业发展实用教程+源码+说明文档+教程.zip
- 1718758871669485_file
- oracle-dba常用sql脚本分类文档.pdf
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)