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

组件化开发

1.组件化开发

  1. 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构[html]、样式[css]、行为
    [js]。
  2. 好处:便于维护,利于复用 → 提升开发效率。
  3. 组件分类:普通组件、根组件。
  4. 比如:下面这个页面,可以把所有的代码都写在一个页面中,但是这样显得代码比较混乱,难易维
    护。咱们可以按模块进行组件划分
    在这里插入图片描述
    在这里插入图片描述

2.根组件App.vue

2.1根组件介绍

在这里插入图片描述

2.2组件是由三部分构成
  • 三部分构成
    1. template:结构 (有且只能一个根元素)
    2. script: js逻辑
    3. style: 样式 (可支持less,需要装包)
  • 让组件支持less
    1. style标签,lang=“less” 开启less功能
    2. 装包: yarn add less less-loader -D 或者npm i less less-loader -D

3.普通组件的注册使用

普通组件的注册有两种方式。
(1)局部注册:
(2)全局注册

3.1普通组件的注册使用-局部注册

1.特点:
只能在注册的组件内使用
2.步骤:

  1. 创建.vue文件(三个组成部分)
  2. 在使用的组件内先导入再注册,最后使用
    3.使用方式:
    当成html标签使用即可 <组件名></组件名>
    4.注意:
    组件名规范 —> 大驼峰命名法, 如 AAAHeader
    5.语法:

// 导入需要注册的组件
// import 组件对象 from ‘.vue文件路径’
import AAAHeader from ‘./components/AAAHeader’
export default {• // 局部注册
components: {
‘组件名’: 组件对象,
AAAHeader:AAAHeader,
AAAHeader
}
}

6.练习
自定义组件:components

<template>
<div><p>我是-Head</p>
</div>
</template>
<script >
</script>
<style scoped>
div{width: 500px;height: 50px;background-color: palevioletred;
}
p{line-height: 50px;
}
</style>

导入组件:App.vue

<template><div id="app">
<!--   使用--><Head></Head></div>
</template><script>
// 导入组件
import Head from './components/Head.vue'
export default {name: 'app',// 注册该组件components: {//   名称:组件名Head:Head}
}
</script><style>
#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

在这里插入图片描述

3.2 普通组件的注册使用-全局注册

1.特点:
全局注册的组件,在项目的任何组件中都能使用
2.步骤
1. 创建.vue组件(三个组成部分)
2. main.js中进行全局注册
3.使用方式
当成HTML标签直接使用
<组件名></组件名>
4.注意
组件名规范 —> 大驼峰命名法, 如 AAAHeader
5.语法
Vue.component(‘组件名’, 组件对象)
6.练习
自定义一个通用组件:components

<script setup>
</script>
<template>
<div><el-button type="primary">通用</el-button>
</div>
</template>
<style scoped>
</style>

导入组件:main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
// 导入组件页面
import MyButton from "@/components/MyButton.vue";
Vue.config.productionTip = false
// 注册全局组件
Vue.component('MyButton',MyButton)
new Vue({router,render: h => h(App)
}).$mount('#app')

使用在这里插入图片描述
在这里插入图片描述

4.组件通信

1.什么是组件通信?
组件通信,就是指组件与组件之间的数据传递

  • 组件的数据是独立的,无法直接访问其他组件的数据。

  • 想使用其他组件的数据,就需要组件通信
    2.组件之间如何通信
    在这里插入图片描述
    3. 组件关系分类
    在这里插入图片描述
    在这里插入图片描述

    3.1父子通信流程
    在这里插入图片描述
    练习
    在这里插入图片描述
    在这里插入图片描述
    父向子传值步骤:

    • 给子组件以添加属性的方式传值
    • 子组件内部通过props接收
    • 模板中直接使用 props接收的值
      3.2子向父通信流程
      在这里插入图片描述
      子向父传值步骤
      • $emit触发事件,给父组件发送消息通知
      • 父组件监听$emit触发的事件
      • 提供处理函数,在函数的性参中获取传过来的参数

      5.路由介绍

      5.1思考
      在这里插入图片描述

      6.路由的基本使用

      6.1声明式使用路由
      定义组件
      在这里插入图片描述
      在这里插入图片描述
      路由渲染
      在这里插入图片描述
      配置路由
      在这里插入图片描述
      6.2编码式使用路由

在这里插入图片描述
在这里插入图片描述

6.3声明路由–查询参数

在这里插入图片描述
传参
在这里插入图片描述
接参
在这里插入图片描述
在这里插入图片描述

声明路由–动态路由参数

在这里插入图片描述
传参:App.vue
在这里插入图片描述
路由配置:index.js
在这里插入图片描述
接参:Home.vue
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++】C++中的find方法介绍
  • 无标题栏窗口通过消息模拟拖动窗口时,无法拖动的一个原因
  • 鸿蒙应用框架开发【基于原生能力的无障碍模式】
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • 基于Deap遗传算法在全量可转债上做因子挖掘(附python代码及全量因子数据)
  • 《计算机网络》(学习笔记)
  • redis面试(三)Hash数据结构
  • Linux--Socket编程TCP
  • LIMS实验室管理系统的三大分类
  • Python自学第五天
  • 计算机毕业设计选题推荐-学院教学工作量统计系统-Java/Python项目实战
  • 【C++】用Lua绑定C/C++对象,实现对脚本调用(依赖LuaBridge实现)
  • Hello 算法:动画图解、一键运行的数据结构与算法教程
  • MySQL的面试题,从简单到困难三道题目
  • 【计算机网络】DHCP实验
  • 深入了解以太坊
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CentOS 7 防火墙操作
  • create-react-app做的留言板
  • JavaScript DOM 10 - 滚动
  • JavaScript函数式编程(一)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql innodb 索引使用指南
  • MySQL QA
  • mysql外键的使用
  • PHP那些事儿
  • Puppeteer:浏览器控制器
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 阿里云前端周刊 - 第 26 期
  • 程序员最讨厌的9句话,你可有补充?
  • 搞机器学习要哪些技能
  • 你真的知道 == 和 equals 的区别吗?
  • 前端工程化(Gulp、Webpack)-webpack
  • 什么是Javascript函数节流?
  • elasticsearch-head插件安装
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Z0458. 树的中心2
  • #控制台大学课堂点名问题_课堂随机点名
  • #数据结构 笔记一
  • (2015)JS ES6 必知的十个 特性
  • (3)STL算法之搜索
  • (7)摄像机和云台
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (ros//EnvironmentVariables)ros环境变量
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (差分)胡桃爱原石
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)iOS字体
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...