2026/4/6 14:27:57
网站建设
项目流程
1.使用scoped解决样式冲突默认情况下写在组件中的样式会全局生效因此很容易造成多个组件之间的样式冲突问题1全局样式默认情况下无论是否是全局组件样式都会加载到全局2局部样式使用scoped属性可以让样式只作用于当前组件包括全局组件scoped的原理是给当前组件的所有元素都添加上一个自定义属性data-v-hash值css选择器后面被自动处理添加上了属性选择器2.data函数的定义与之前传统的HTML形式开发不同在VueCli中对于data可能会出现父组件引用多次相同子组件的情况这种情况就会出现无法实现每次子组件的数据独立性修改其中的一个数据其他子组件也会被影响因此我们可以使用data函数的形式每使用一次子组件就创建一个新对象以实现数据的独立性3.组件间的通信3.1父组件与子组件之间的通信父子组件通信的流程父组件通过props将组件传递给子组件子组件通过$emit通知父组件修改更新父组件传值给子组件时在第二步中 :属性名值属性名可以是HTML原生属性也可以自己取名子组件通过$emit()方法提醒父组件修改数据使用props还可以传递任意数量任意类型的数据用props进行批量传值props校验用来校验传递过来的数据满不满足要求如果不满足会报错props类型校验可以校验数据类型非空校验默认值设置以及自定义校验props和data的区别二者都可以用来定义数据区别在于props是接收的外部的数据不能随便更改如果需要修改需要通知父组件进行修改而data是自己的数据可以随意修改4.非父子通信--eventBus事件总线实现步骤1创建一个都能访问到的事件总线空的Vue实例import Vue from vue const Bus new Vue() export default Bus2A组件接收方监听Bus实例的事件3B组件发送方触发Bus实例的事件4在App.vue根组件中进行定义5.组件跨层级共享数据--ProvideInject实现步骤1祖先组件provide提供数据2后备组件inject取值使用这里如果祖先组件修改非响应式数据非对象后辈组件是不会接收到的6.v-model本质上是一个语法糖代表了value和input的双向绑定我们将表单封装在组件里面。通过前面我们知道数据是封装在父组件的如果表单定义在子组件里面如何实现表单和数据的双向绑定这个时候不能直接使用v-model。因为v-model的使用前提是视图和数据都在同一个组件里面才可以。这里可以使用v-model简化父组件代码子组件中props通过value吸收事件触发input父组件中v-model给组件直接绑定数据(:value input)7.sync属性可以实现子组件和父组件数据的双向绑定特点prop属性名可以自定义非固定为value本质就是:属性名和update:属性名合写8.ref和$refs作用使用ref和$refs可以用于获取dom元素或组件实例特点查找范围在当前组件内操作dom元素我们还可以通过ref和$refs操作组件实例。我们通常在组件内部会封装一些函数。这个时候我们可以在父组件内部去获取这些子组件的实例然后基于子组件的实例去调用子组件内部封装的函数。8.使用$nextTick实现VueDOM元素的异步更新在更新完DOM数据后需要一段时间来重新渲染DOM元素因此在修改完DOM后向进行进一步的更新需要保证异步实现也就是必须先让DOM更新完并重新渲染完再去操作语法如下