VUE之旅—day2

文章目录

  • Vue生命周期和生命周期的四个阶段
        • created应用—新闻列表渲染
        • mounted应用—进入页面搜索框就获得焦点
        • 账单统计(Echarts可视化图表渲染)

Vue生命周期和生命周期的四个阶段

思考:

什么时候可以发送初始化渲染请求?(越早越好)

什么时候可以开始操作dom?(至少dom得渲染出来)

Vue生命周期: 一个Vue实例从创建到销毁的整个过程

生命周期四个阶段: ①创建②挂载③更新④销毁

在这里插入图片描述

在这里插入图片描述

Vue生命周期函数(钩子函数)

Vue生命周期过程中,会自动运行一些函数,被称为【生命周期钩子】—>让开发者可以在【特定阶段】运行自己的代码。

在这里插入图片描述

代码说明

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>生命周期的四个阶段</title>
</head><body><div id="app"><h1>{{title}}</h1><button @click="sub">-</button><span>{{count}}</span><button @click="add">+</button></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100,title: '计数器'},// 1.创建阶段(准备数据)beforeCreate() {console.log('beforeCreate 响应式数据准备好之前', this.count);//undefined},created() {// created,这一阶段开始,就能发送初始化渲染请求console.log('Created 响应式数据准备好之后', this.count);// 100},// 2.挂载阶段(渲染模板)beforeMount() {console.log('beforeMount 模板渲染之前', document.querySelector('h1').innerHTML);// {{title}}},mounted() {// created,这一阶段开始,就能操作dom了console.log('mounted 模板渲染之后', document.querySelector('h1').innerHTML);// 计数器},// 3.更新阶段(修改数据 → 更新视图)beforeUpdate() {console.log('beforeUpdate 数据修改了,视图还没更新', document.querySelector('span').innerHTML);},updated() {console.log('Updated 数据修改了,视图已经更新', document.querySelector('span').innerHTML);},//4.卸载阶段//Vue提供了一个语法 Vue对象名.$destroy()  用来查看卸载状态beforeDestroy() {console.log('beforeDestory 卸载前');console.log('清除掉一些Vue以外的资源占用,定时器,延时器...');},destroyed() {console.log('destroyed 卸载后');},methods: {add() {this.count++},sub() {this.count--}}})</script>
</body></html>
created应用—新闻列表渲染
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>新闻列表渲染</title><style>#app {width: 500px;margin: 0 auto;}#app ul {width: 100%;margin: 0;padding: 0;list-style: none;}#app ul li.news {width: 100%;height: 120px;display: flex;background-color: rgb(252, 252, 252);margin: 20px 0;border: 1px solid #eee;border-left: none;border-right: none;}#app ul li.news .left {width: 70%;height: 100%;}#app ul li.news .left .title {width: 90%;height: 70%;font-size: 18px;font-weight: bold;margin: 5px 0;color: #292929;}#app ul li.news .left span {font-size: 14px;color: #454545;margin-right: 20px;}#app ul li.news .right {width: 30%;height: 100%;}#app ul li.news .right img {width: 100%;height: 100%;}</style>
</head><body><div id="app"><ul><li v-for="(item,index) in list" :key="item.id" class="news"><div class="left"><div class="title">{{item.title}}</div><div class="info"><span>{{item.source}}</span><span>{{item.time}}</span></div></div><div class="right"><img :src="item.img" alt=""></div></li></ul></div><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>// 接口地址:http://hmajax.itheima.net/api/news// 请求方式 get const app = new Vue({el: '#app',data: {list: []},async created() {// 1.发送请求,获取数据const res = await axios.get('http://hmajax.itheima.net/api/news')console.log(res);//查看获取到的数据// 2.将数据更新给data中的listthis.list = res.data.data}})</script>
</body></html>
mounted应用—进入页面搜索框就获得焦点
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>搜索框一进入就获得焦点</title><style>.container {width: 600px;height: auto;margin: 0 auto;}.container .seacher-container {width: 100%;height: 150px;text-align: center;background-color: aliceblue;}.container .seacher-container .search-box {width: 80%;height: 35px;margin: 20px auto;border: 1px solid #8b8b8b;display: flex;border-radius: 5px;justify-content: flex-end;align-items: center;background-color: #ffffff;border-right: none;}.container .seacher-container .search-box input {width: 78%;height: 90%;border: none;outline: none;background-color: #ffffff;}.container .seacher-container .search-box button {width: 20%;height: 106%;border: none;outline: none;background-color: #ea2704;color: #f5f5f5;border-radius: 5px;border-top-left-radius: 0;border-bottom-left-radius: 0;cursor: pointer;}</style>
</head><body><div class="container" id="app"><div class="seacher-container"><img src="http://www.itheima.com/images/logo.png" alt=""><div class="search-box"><input type="text" v-model="words" id="inp" autocomplete="off"><button>搜索一下</button></div></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {words: ''},// 核心思路:// 1.等输入框渲染出来// 2.让输入框获取焦点mounted() {document.querySelector('#inp').focus()}})</script>
</body></html>
账单统计(Echarts可视化图表渲染)
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#app {margin: 0 auto;width: 1100px;height: auto;}h3 {color: #8d5252;}/* https://www.apifox.cn/apidoc/shared-24459455-ebb1-4fdc- */.container {width: 1100px;display: flex;justify-content: space-between;}.container #tableArea {width: 50%;height: auto;}.container #tableArea .iptArea {width: 100%;height: 30px;margin-bottom: 10px;}.container #tableArea .iptArea input {width: 40%;height: 100%;border: 1px solid #e2e1e1;border-radius: 4px;text-indent: 5px;outline: none;}.container #tableArea .iptArea button {width: 15%;height: 110%;border: none;outline: none;background-color: rgb(9, 114, 206);color: #fff;border-radius: 4px;cursor: pointer;}.container #tableArea table {width: 100%;height: auto;text-align: left;border-collapse: collapse;font-size: 14px;}.container #tableArea table tr {height: 40px;border-bottom: 1px solid #eee;}.container #tableArea table tr .red {color: red;}.container #tableArea table tr td a {color: rgb(42, 97, 238);text-decoration: none;}.container #chartArea {width: 45%;height: 330px;border: 1px solid #eee;padding: 10px;}@media (max-width: 768px) {.container {width: 600px;flex-wrap: wrap;justify-content: center;}.container #tableArea {width: 90%;}.container #chartArea {width: 90%;}}@media (min-width: 1200px) {.container {width: 1100px;flex-wrap: wrap;}.container #tableArea {width: 50%;}.container #chartArea {width: 45%;}}</style>
</head><body><div id="app"><h3>小黑记账清单</h3><div class="container"><div id="tableArea"><div class="iptArea"><input type="text" placeholder="消费名称" v-model.trim="name"><input type="text" placeholder="消费价格" v-model.number="price"><button @click="addData">添加账单</button></div><table><thead><tr><th>编号</th><th>消费名称</th><th>消费价格</th><th>操作</th></tr></thead><tbody><tr v-for="(item,index) in list" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td :class="{red:item.price>500}">{{item.price}}</td><td><a @click="delData(item.id)" href="javascript:;">删除</a></td></tr></tbody><tfoot><tr><th colspan="4">消费总计:<span>{{totalPrice}}</span></th></tr></tfoot></table></div><div id="chartArea"><div id="main" style="width:550px;height:330px;"></div></div></div></div><script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><!-- //接口地址// 查询我的账单列表 https://applet-base-api-t.itheima.net/bill get请求方式,请求参数creator// 删除账单明细 https://applet-base-api-t.itheima.net/bill/{id} delete请求方式,请求参数id// 添加账单 https://applet-base-api-t.itheima.net/bill post请求方式,请求参数creator、name、 price// 转换 https://applet-base-api-t.itheima.net/bill--><script>const app = new Vue({el: '#app',data: {list: [],name: '',price: ''},computed: {totalPrice() {return this.list.reduce((sum, item) => sum + item.price, 0).toFixed(2)}},created() {this.getData()},mounted() {this.myChart = echarts.init(document.getElementById('main'));this.myChart.setOption({title: {text: '消费账单列表',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: '消费账单',type: 'pie',radius: '50%',data: [],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]});},methods: {async getData() {const res = await axios.get('https://applet-base-api-t.itheima.net/bill', {params: {creator: '小黑'}})this.list = res.data.datathis.myChart.setOption({series: [{data: this.list.map(item => ({ value: item.price, name: item.name }))}]})},async addData() {// 优化if (!this.name) {alert("请输入消费名称")return}if (typeof this.price !== 'number') {alert("请输入正确的消费价格")return}//发送添加请求const res = await axios.post('https://applet-base-api-t.itheima.net/bill', {creator: '小黑',name: this.name,price: this.price})console.log(res);// 重新再渲染一次this.getData()// 清空输入框this.name = ''this.price = ''},async delData(id) {const res = await axios.delete(`https://applet-base-api-t.itheima.net/bill/${id}`)console.log(res);// 重新再渲染一次this.getData()}}})</script>
</body></html>

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

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

相关文章

前端本地调试云效上Vue项目的构建产物

一、问题背景 前两天前端小伙伴&#xff0c;在云效上构建了一个前端项目&#xff0c;构建结果显示成功&#xff0c;访问后发现Console控制台报错&#xff1a;ReferenceError: defineComponent is not defined 在此之前的版本&#xff0c;构建和访问并没有此异常&#xff0c;而…

【设计模式】JAVA Design Patterns——Abstract-document(抽象文档模式)

&#x1f50d; 目的 使用动态属性&#xff0c;并在保持类型安全的同时实现非类型化语言的灵活性。 &#x1f50d; 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全&#xff0c;并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…

eMMC和SD模式速率介绍

概述 在实际项目开发中我们常见的问题是有人会问,“当前项目eMMC、SD所使用模式是什么? 速率是多少?”。这些和eMMC、SD的协议中要求的,要符合协议。接下来整理几张图来介绍。 eMMC 模式介绍 一般情况下我们项目中都是会支持到HS400 8bit 1.8V,最大时钟频率为200MHZ,通…

会议邀请函:Prometheus开源无人机平台-无人机追踪无人车代码实战|第四届中国智能汽车创新大会

扫描上方海报二维码&#xff0c;参与报名 阿木实验室&#xff1a;为机器人研发提供开源软硬件工具和课程服务&#xff0c;让研发更高效&#xff01; 技术发展的日新月异&#xff0c;阿木实验室将紧跟技术的脚步&#xff0c;不断把机器人行业最新的技术和硬件推荐给大家。如果你…

C#【进阶】委托和事件

委托和事件 文章目录 1、委托1、委托概念2、基本语法3、定义自定义委托4、使用自定义委托5、委托变量可以存储多个函数6、系统定义好的委托思考 怪物死亡数据更新 2、事件1、事件概念2、事件的使用3、为什么有事件思考 热水器 3、匿名函数1、匿名函数概念2、基本语法3、使用4、…

iLogtail 社区开源之夏活动来了!

作者&#xff1a;玄飏 在这个充满活力的夏日&#xff0c;随着阳光一同灿烂的是开源精神的光辉与创新的火花。iLogtail 社区高兴地宣布&#xff0c;我们正式加入开源之夏 2024 的行列&#xff0c;诚邀每一位怀揣梦想与激情的学生开发者&#xff0c;共同开启一场探索技术前沿、贡…

机器学习入门介绍

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 目录 三大方向机器学习产生的原因机器如何学习…

基于springboot+vue+Mysql的大学生社团活动平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

图文成片剪辑软件,分享3个专业的工具!

在数字化时代&#xff0c;图文成片剪辑软件成为了我们创作与表达的重要工具。无论是想要制作一段引人入胜的短视频&#xff0c;还是打造一幅精美的图文海报&#xff0c;这些软件都能助你一臂之力。那么&#xff0c;图文成片剪辑软件的方法有哪些&#xff1f;又有哪些值得一试的…

PHP开发中的不安全反序列化

序列化是开发语言中将某个对象转换为一串字节流的过程&#xff0c;转换后的字节流可以方便存储在数据库中&#xff0c;也可以方便在网络中进行传输。而反序列化则是将数据库取出的字节流或从网络上接收到的字节流反向转换为对象的过程。概念虽如此&#xff0c;但不同的开发语言…

ASP.NET在线二手交易系统的设计与实现

摘 要 随着当今社会信息技术的进步&#xff0c;基于互联网的各种应用日益受到了人们的重视&#xff0c;二手商品的重新利用也逐渐被人们关注&#xff0c;二手交易系统就在这种形势下产生了&#xff0c;它利用网络&#xff0c;改变了人们的购物方式。 本文是基于现代二手交易…

AC/DC电源模块的故障诊断与维修技巧

BOSHIDA AC/DC电源模块的故障诊断与维修技巧 AC/DC电源模块是一种常用的电力转换设备&#xff0c;用于将交流电转换为直流电供给电子设备。然而&#xff0c;由于使用环境和操作不当等原因&#xff0c;电源模块可能会出现故障。本文将介绍AC/DC电源模块的故障诊断与维修技巧。…

什么?你设计接口什么都不考虑?

如果让你设计一个接口&#xff0c;你会考虑哪些问题&#xff1f; 1.接口参数校验 接口的入参和返回值都需要进行校验。 入参是否不能为空&#xff0c;入参的长度限制是多少&#xff0c;入参的格式限制&#xff0c;如邮箱格式限制 返回值是否为空&#xff0c;如果为空的时候是…

不相交集合的数据结构

一、不相交集合的操作 不相交集合的数据结构维护了一组不相交动态集的集合 &#xff0c;用集合中的某个成员作为代表标识集合。 集合在没有修改的情况下每次访问代表得到的答案是相同的&#xff0c;此外在其它一些应用中&#xff0c;可能按照规定选择集合的代表&#xff0c;例如…

WebSocket or SSE?即时通讯的应用策略【送源码】

最近在研究H5推送&#xff0c;发现除了我们常用的WebSocket以外&#xff0c;其实还有一种协议也能实现H5推送&#xff0c;那就是SSE协议。 而且&#xff0c;当前主流的大模型平台&#xff0c;比如ChatGPT、通义千问、文心一言&#xff0c;对话时采用的就是SSE。 什么是SSE协议…

100m/s高速轧制钢材 八轴测径仪检测毫无压力

关键词&#xff1a;八轴测径仪,在线测径仪,钢材测径仪,高速轧制 随着技术的提升&#xff0c;钢材的生产速度越来越快&#xff0c;一些高速生产的钢材&#xff0c;生产速度甚至达到了100m/s&#xff0c;这是一个非常快的速度。 如果汽车以120公里/小时的速度行驶&#xff0c;那么…

Unity WebGL全屏显示

一、删除footer节点 二、删除最下面点击事件绑定 修改Canvas宽高 canvas.style.width "960px"; canvas.style.height "600px"; 改成 canvas.style.width document.documentElement.clientWidth"px"; canvas.style.height document.document…

行为驱动开源免费接口测试框架:karate

什么是行为驱动测试&#xff1a; 行为驱动测试&#xff08;Behavior-Driven Testing&#xff0c;简称 BDT&#xff09;是一种测试方法&#xff0c;旨在通过描述系统行为和功能来编写测试用例。BDT的重点是从用户的角度出发&#xff0c;描述系统应该如何行为&#xff0c;而不是专…

DiskANN数据布局

_mem.index.data&#xff1a;和sift_base.fbin一模一样。0-3字节是总向量数&#xff0c;4-7是每个向量的特征数。后面就是依次放置的每个向量。 _disk.index&#xff1a;是存储的图&#xff0c;但是不光包含图也包含原始向量。前4KB不知道存的是啥。从第0x1000开始存放的是原始…

国内企业更喜欢私有化部署的 6 大原因

今天在 V 站看到一篇题为《为什么国内企业会更倾向于接受私有部署而不是 SaaS&#xff1f;》的帖子&#xff0c;觉得很有启发&#xff0c;这里把网友的观点稍作整理和总结&#xff0c;分享给大家参考。 在技术日益发展的今天&#xff0c;国内企业的软件部署方式似乎呈现出与欧…