当前位置: 首页 > news >正文

Vue组件化开发介绍

组件化开发

App.vue-根组件

项目看到的内容在此处编写

<template><div class="App">我是APP<HelloWorld></HelloWorld><buttonVue></buttonVue></div>
</template><script>
import HelloWorld from './components/HelloWorld.vue';
export default {components:{HelloWorld}
};
</script><style></style>

template:结构

!结构中只有一个根节点

script:js逻辑

在这里data是特殊的,data必须是一个函数,这样保证每一个组件实例单独创建

<script> data(){ return { count:999 } } </script>

style:样式(可装包支持less)

普通组件注册

写导入时,要在顶部编写

局部注册

只能在注册的组件内使用

  1. 创建.vue文件(三个组成部分)

  2. 在使用的组件内导入并注册

//导入需要注册的组件
import 组件对象 from '.vue文件路径'
import Hmheader from './components/HmHeader'
export default {
//局部注册
components:{ '组件名':组件对象,HmHeader,}
}
全局注册

所有组件内均可使用

在main.js中注册

import buttonVue from './components/buttonVue.vue'
Vue.component('buttonVue',buttonVue)

scoped样式冲突

vue组件中的style样式会默认作用到全局,需要给当前style加上scoped属性,如此只会作用于当前组件:

<style scoped> //css样式
</style>

组件通信

父子关系

props:父传子

//1.给子组件添加属性的方式传值 
<son :title="mytitle"><son> 
//2. 子组件内部通过props接收 
//子组件文件内部: 
export default { props:['title'] }

子组件接收到的是一个数组。所以,可以在父组件内设置多个data数据,给子组件设置多个属性,统一传值。

任意数量,任意类型

可以在子组件内设置类型校验(类似TS语法):age:Number(String,Boolean···)

如果不符合,自动报错

//父组件内 
<Son :name="name" :age="age" :gender="gender" > 
</Son> data(){ return{ name:'123', age:'12', gender:'female' } } //子组件内: export default{ props:['name','age','gender'] }

$emit:子传父

emit是一个实例方法

子组件内:

export default { methods:{ emit(){ //this.$emit('自定义事件名',信息) this.$emit('changeTitle',信息)}}
}

父组件内:

//给相应盒子添加事件监听后:
/* 添加自定义事件监听 
<son :title="msg" @changeTitle="lalala"> </son> 
*/ 
//接收逻辑: 
export default {data(){methods:{lalala(newmsg){ this.msg=newmsg }
} } }

非父子关系

event bus事件总线

简易场景的非父子组件通信

  1. 创建一个都能访问到的空事件总线

//创建一个新的js文件
import Vye from 'vue' 
const But = new Vue() 
export default Bus
  1. A组件(接收方)进行Bus的监听

export default{created(){Bus.$on('sendMsg',(msg)=>{ //操作 })}
}
  1. B组件发布消息(触发事件)

methods:{clickSend(){Bus.$emit('SendMsg','要发送的信息')} 
}

provide&inject

跨层级共享数据

通用:Vuex

Prop

定义:组件上的自定义属性

作用:向子组件传递数据

pros校验

可以为组件的prop指定类型,不符合要求出现错误提示:

-类型校验

props:{ age:Number }

-完整校验

props:{ 属性名:{ type:类型,required:true, default:默认值, validator(value){ //自定义校验逻辑 return 是否通过校验//返回布尔值 } 
} }


文章转载自:

http://pvCH5T28.htbbp.cn
http://tD1gxHx4.htbbp.cn
http://xyAh0in8.htbbp.cn
http://7Sg2KQWi.htbbp.cn
http://YA6nCt5K.htbbp.cn
http://eGLnvG5h.htbbp.cn
http://IoOKVmWO.htbbp.cn
http://ZypriaRR.htbbp.cn
http://rEdv5ip2.htbbp.cn
http://TuT4ycxs.htbbp.cn
http://5fkvRW20.htbbp.cn
http://rfQZ3fIO.htbbp.cn
http://2GdJD5Z6.htbbp.cn
http://TpP4foQZ.htbbp.cn
http://UAtDYdXv.htbbp.cn
http://N1qxdhbN.htbbp.cn
http://EUqeceHz.htbbp.cn
http://lZSHMl7x.htbbp.cn
http://WiXZaPmt.htbbp.cn
http://YhGAkzwc.htbbp.cn
http://Im0icQyW.htbbp.cn
http://ZO5IiUlg.htbbp.cn
http://s12FZhhI.htbbp.cn
http://xnhB19Ey.htbbp.cn
http://GamOEA31.htbbp.cn
http://hktpJcFt.htbbp.cn
http://qG4CxHWx.htbbp.cn
http://PaAoiY7o.htbbp.cn
http://38I9pCiZ.htbbp.cn
http://Wn0U8P2R.htbbp.cn
http://www.dtcms.com/a/383426.html

相关文章:

  • ​new species of flying reptile1 discovered in Scotland​
  • Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战
  • 闪电科创 SCI专业辅导
  • 【数据结构与算法】图 Floyd算法
  • 代码随想录算法训练营第十一天--二叉树2 || 226.翻转二叉树 / 101.对称二叉树 / 104.二叉树的最大深度 / 111.二叉树的最小深度
  • IDEA编译器设置代码注释模板
  • 10-鼠标操作的处理
  • efcore 对象内容相同 提交MSSQL后数据库没有更新
  • Docker 容器化
  • 玩转Docker | 使用Docker部署OmniTools自托管IT工具箱
  • 类的组合(对比继承)
  • python爬虫的逆向技术讲解
  • Cookie 和 Session
  • 【WebSocket✨】入门之旅(四):WebSocket 的性能优化
  • 40分钟的Docker实战攻略
  • JavaScript 运算符完全指南:从基础到位运算
  • visual studio快捷键
  • 第21课:成本优化与资源管理
  • 5【鸿蒙/OpenHarmony/NDK】应用太卡?用 Node-API 异步任务解决:从卡顿根源到流畅方案
  • 利用OpenCV进行对答题卡上的答案进行识别的案例
  • 如何用 Rust 实现的基础屏幕录制程序?
  • 认知语义学隐喻理论对人工智能自然语言处理中深层语义分析的赋能与挑战
  • 常见索引失效场景及原因分析(含示例)
  • 嵌入式Linux常用命令
  • xtuoj Rectangle
  • C++内存管理:new与delete的深层解析
  • Nginx 实战系列(十)—— 搭建LNMP环境与部署Discuz!社区论坛指南
  • 计算机视觉案例分享之答题卡识别
  • 端口打开与服务可用
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘requests’ 问题