Vue基础(三)

生命周期

又名生命周期回调函数,生命周期函数,生命周期钩子
是什么:Vue在关键时刻帮我们调用的一些特殊名称的函数
生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的
生命周期函数中的this指向是vm或者组件实例对象

<body><div id="root"><h2 :style="{opacity}">欢迎学习Vue</h2></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false;const vm = new Vue({el:'#root',data:{opacity:1},//mounted生命周期函数// Vue完成模板的解析并把初始真实的DOM元素放入页面后(完成挂载),调用mountedmounted(){setInterval(()=>{this.opacity -= 0.01if(this.opacity <= 0) this.opacity = 1},16)}})// setInterval(()=>{//     vm.opacity -= 0.01//     if(vm.opacity <= 0) vm.opacity = 1// },16)
</script>

在这里插入图片描述

总结

在这里插入图片描述

组件

模块与组件

模块

向外提供特定功能的js程序,一般就是一个js文件
为什么:js文件很多很复杂
作用:复用js,简化js的编写,提高js运行效率

模块化

当应用中的js都以模块来编写,那这个应用就是模块化的应用

组件

用来实现局部(待定)功能效果的的代码集合
为什么:一个界面的功能很复杂
作用:复用编码,简化项目编码,提高运行效率

组件化

当应用中的功能都是多组建的方式来编写的,那这个应用就是一个组件化的应用

非单文件组件

一个组件中包含有n个组件

单文件组件

一个文件中只包含有一个组件

基本使用

在这里插入图片描述

<body><div id="root"><school></school><hr><student></student></div><div id="root2"><info></info></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false;//创建组件const school = Vue.extend({template: `<div><h2>学校名称:{{name1}}</h2><h2>学校地址:{{adress1}}</h2></div>`,data(){return {name1:'清华大学',adress1:'北京'}}})const student = Vue.extend({template: `<div><h2>学生姓名:{{studentName}}</h2><h2>学生年龄:{{age}}</h2></div>`,data() {return {studentName: 'zhangsan',age: 18}},})const info = Vue.extend({template: `<div><h2>你好{{address}}</h2></div>`,data() {return {address: '北京'}},})//全局注册Vue.component('info',info)const vm = new Vue({el:'#root',// data:{//     name: '清华大学',//     adress: '北京',//     studentName: 'zhangsan',//     age: 18// },// 注册组件(局部注册)components:{school,student}})new Vue({el:'#root2'})
</script>

注意点

在这里插入图片描述

组件的嵌套

<body><div id="root"><school></school></div></body>
<script type="text/javascript">Vue.config.productionTip = false;const student = Vue.extend({template: `<div><h2>学生姓名:{{studentName}}</h2><h2>学生年龄:{{age}}</h2></div>`,data() {return {studentName: 'zhangsan',age: 18}},})//创建组件const school = Vue.extend({template: `<div><h2>学校名称:{{name1}}</h2><h2>学校地址:{{adress1}}</h2><student></student></div>`,data(){return {name1:'清华大学',adress1:'北京'}},components:{student}})new Vue({el:'#root',data:{msg:'你好啊'},// 注册组件(局部注册)components:{school,}})
</script>

VueComponent

在这里插入图片描述

一个重要的内置关系

VueComponent.prototype.proto===Vue.prototype
目的:让组件实例对象(vc)可以访问到Vue原型上的属性和方法

组件自定义事件

在这里插入图片描述

Vue脚手架

是Vue官方提供的标准化开发工具(开发平台)
在这里插入图片描述

安装

# 安装脚手架npm install -g @vue/cli# 进入要创建项目的文件夹下vue create 项目名称

render

  1. vue.js与vue.runtime.xxx.js的区别:
    (1)vue.js是完整版的Vue.包含:核心功能+模板解析器
    (2)vue.runtime.xxx.js是运行版的Vue,只包含核心功能,没有模板解析器
  2. 因为vue.runtime.xxx.js没有模板解析器,所以不能使用template配置项,需要使用render函数接收到的createElement函数去指定具体内容

修改默认配置

在这里插入图片描述

ref属性

  1. 被用来给元素或子组件注册引用信息(id的替代者)
  2. 应用在html标签上获取的是真实的DOM元素,应用在组件标签上是组件实例对象(vc)
  3. 使用方式:
    打标识:

    或者
    获取:this.$refs.xxx

props配置

在这里插入图片描述

mixin混入

在这里插入图片描述

插件

在这里插入图片描述

scoped样式

让样式在局部生效,防止冲突

写法
<style scoped>

Todo-list案例

//安装
npm i nanoid//引入
import {nanoid} from 'nanoid'//调用
nanoid()//生成唯一的字符串

在这里插入图片描述

浏览器本地存储

在这里插入图片描述

全局事件总线

一种组件间通信的方式,适用于任意组件间通信
最好在beforeDestory钩子中,用$off去解绑当前组件所用到的事件

安装

new Vue({render: h => h(App),beforeCreate(){Vue.prototype.$bus = this//安装全局事件总线,$bus就是当前应用的vm}
}).$mount('#app')

使用

  1. 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身
methods(){demo(data){.......}
}········
mounted(){this.$bus.$on('xxx',this.demo)
}
  1. 提供数据:this. b u s . bus. bus.emit(‘xxx’,数据)

消息订阅与发布

一种组件间的通信方式,适用于任意组件间通信
使用

  1. 安装pubsub: npm i pubsub-js
  2. 引入 import pubsub from ‘pubsub-js’
  3. 接收数据:A组件想接受数据,则在A组件中订阅消息,订阅的回调留在A组件自身
methods(){demo(data){·······}
},
········
mounted(){this.pid=pubsub.subscribe('xxx',this.demo)//订阅消息
}
  1. 提供数据 pubsub.publish(‘xxx’,数据)
  2. 最好在beforeDestroy钩子中,用pubsub.unsubscribe(pid)去取消订阅

$nextTick

语法:this.$nextTick(回调函数)
作用:在下一次DOM更新结束后执行其指定的回调,要在nextTick所指定的回调函数中执行
使用:当改变数据后,要基于更新后的新DOM进行某些操作时,要在nextTick所指定的回调函数中执行
在这里插入图片描述

过渡与动画

  1. 作用:在插入,更新,或者移除DOM元素时,在合适的时候给元素添加样式类名

  2. 图示
    在这里插入图片描述

  3. 写法
    准备好样式
    (1)元素进入的样式
    ● v-enter:进入的起点
    ● v-enter-active:进入过程中
    ● v-enter-to:进入的终点
    (2)元素离开的样式
    ● v-leave:离开的起点
    ● v-leave-active:离开过程中
    ● v-leave-to:离开的终点
    使用包裹要过渡的元素,并配置name属性

<transition name="hello" appear><h1 v-show="isShow"  class="demo">你好啊</h1>
</transition>

若有多个元素需要过渡,则需使用:,且每个元素都要指定key值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode - 周赛418

目录 一&#xff0c;3309. 连接二进制表示可形成的最大数值 二&#xff0c;3310. 移除可疑的方法 三&#xff0c;3311. 构造符合图结构的二维矩阵 四&#xff0c;3312. 查询排序后的最大公约数 一&#xff0c;3309. 连接二进制表示可形成的最大数值 本题数据范围较小&#…

鼓组编写:SsdSample鼓映射 GM Map 自动保存 互换midi位置 风格模板 逻辑编辑器

SsdSample音源的键位映射 方便编写鼓的技巧 可以这样去设置键位关系的面板和钢琴卷帘窗的面板&#xff0c;方便去写鼓。 可以先按GM的midi标准去写鼓&#xff0c;然后比对下鼓的键位映射的关系&#xff0c;去调整鼓。 可以边看自己发b站等处的图文笔记&#xff0c;然后边用电…

网络初识基本概念总结

网络发展背景 经历了 单机阶段 -> 局域网阶段 -> 广域网阶段 -> 移动互联网阶段 (简单介绍一下) 其他一些小概念 局域网LAN: 是把一些设备通过交换机 / 路由器连接, 形成的私有网络广域网WAN: 是把更多的局域网相互连接起来,当规模足够大时形成广域网交换机和路由器…

STM32F103ZET6 FREERTOS 双UART 多任务多串口输出(配置教程)

基本的stm32cubemx使用就不细说了&#xff0c;要想配置freertos&#xff0c;用这个工具配置那是相当方便和简单 1、系统晶振配置 使用外部时钟晶振&#xff0c;配置如图 2、系统定时器设置 serial wire 保证下次可以程序下载 SysTick 是 Cortex-M 内核中的一个系统定时器&a…

用C++编写信息管理系统(歌单信息管理)

C语言是面向过程的编程语言&#xff0c;而C是面向对象的编程语言&#xff0c;在书写代码时风格有所不同&#xff08;也存在很多共性&#xff09;。 程序说明 本次系统程序使用的是C语言进行编写&#xff0c;主要考虑怎么实现面向对象的问题。 因为本次程序属于小型系统程序&…

C语言 | 第十六章 | 共用体 家庭收支软件-1

P 151 结构体定义三种形式 2023/3/15 一、创建结构体和结构体变量 方式1-先定义结构体&#xff0c;然后再创建结构体变量。 struct Stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 }; struct Stu stu1, stu2; //…

从二维到三维,电商行业有哪些变化?

从二维到三维&#xff0c;电商行业经历了一系列显著的变化&#xff0c;这些变化不仅体现在商品展示的方式上&#xff0c;还深刻影响了消费者的购物体验、电商平台的运营策略以及整个电商行业的竞争格局。 一、商品展示方式的变革 二维展示阶段&#xff1a; 在电商行业的早期&…

【黑苹果】记录MacOS升级Sonoma的过程

【黑苹果】记录MacOS升级Sonoma的过程 一、硬件二、提前说明三、准备OC四、选择驱动五、选择ACPI六、下载内核扩展七、其他问题 一、硬件 设备是神舟zx6-ct5da 具体参照下图 二、提前说明 本机器已经安装过 macOS Monterey 12.6&#xff0c;这次是升级到 macOS Sonoma 14。 …

Java后端面试题(day16)

目录 java常见的引用类型java中深拷贝和浅拷贝如何设计一个秒杀系统?谈一下对高并发的理解&#xff0c;平时怎么处理高并发问题?Comparable和Comparator区别&#xff1f;解决hash冲突有哪些方法&#xff1f;Synchronized锁的升级过程 java常见的引用类型 java的引用类型一般分…

图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网)

图论day56|广度优先搜索理论基础 、bfs与dfs的对比&#xff08;思维导图&#xff09;、 99.岛屿数量&#xff08;卡码网&#xff09;、100.岛屿的最大面积&#xff08;卡码网&#xff09;&#xff09; 广度优先搜索理论基础bfs与dfs的对比&#xff08;思维导图&#xff09;&…

C++调试方法(Vscode)(一) ——本地调试

初学者在调试一段代码的时候&#xff0c;经常出于不明原因&#xff0c;写出bug&#xff0c;导致程序崩溃。但是定位崩溃的地方时&#xff0c;往往采用简单而朴素的方法&#xff1a;即采用cout或者printf进行输出。这种方式既原始&#xff0c;又低效。一个合格的工程师应该是通过…

RabbitMQ简介及安装类

RabbitMQ概述-MQ介绍 RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它支持多种消息协议&#xff0c;并且可以轻松地与多种编程语言和框架集成。RabbitMQ是使用Erlang语言编写的&#xff0c;因此它具有高并发和高可用性的特点。以下是RabbitMQ的一些关键特性和概念 消息…

华为OD机试 - 区间交叠问题 - 贪心算法(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Django的请求与响应

Django的请求与响应 1、常见的请求2、常见的响应3、案例 1、常见的请求 函数的参数request是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据。 get请求一般用来请求获取数据&#xff0c;get请求也可以传参到后台&#xff0c;但是传递的参数显示在地址栏。 post请求…

【CSS3】css开篇基础(2)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

el-date-picker设置只有某些日期可选

示例图&#xff1a; <el-date-pickerv-model"topFormObj.upTime"type"date"value-format"timestamp"format"dd/MM/yyyy":picker-options"pickerOptions" /> 固定限制每周的周末周三不可选 data() {return {pickerOp…

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块 简介 下载与安装 如何使用安装好的第三方开源模块 如何上传自己写的模块到 PyPi 简介 在前面的模块介绍和导入当中主要介绍的都是 Python 内置的一些模块&#xff0c;我们把它称为标准库&#…

【多版本并发控制(MVCC)】

并发事务问题&#xff1a; MySQL隔离级别-未提交读&#xff0c;提交读&#xff0c;可重复读&#xff0c;序列化 隔离级别对于并发事务的解决情况 隔离级别脏读不可重复读幻读未提交读不可不可不可读已提交可不可不可可重复读 &#xff08;默认&#xff09;可可不可串行化&…

vue+echarts实现雷达图及刻度标注

文章目录 前言代码实现实现效果总结 前言 最近项目有做数据可视化 大屏 不免再次使用些echarts应用 记录下其中echarts雷达图的实现 代码实现 先上代码 <template><div class"container"><div ref"chart" style"width: 500px; heig…

树莓派应用--AI项目实战篇来啦-11.OpenCV定位物体的实时位置

1. 介绍 本项目通过PCA9685舵机控制模块控制二自由度舵机云台固定在零点位置&#xff0c;然后通OpenCV检测到黄色小熊&#xff0c;找到中心位置并打印出中心位置的坐标&#xff0c;通过双色LED灯进行指示是否检测到目标&#xff0c;本项目为后面二维云台追踪物体和追踪人脸提供…