Vue 1.26
一、指令补充1.指令修饰符1按键修饰符keyup.enter→ 键盘回车监听body div idapp h3keyup.enter 监听键盘回车事件/h3 input keyup.enterfn v-modelusername typetext /div script srchttps://cdn.jsdelivr.net/npm/vue/dist/vue.js/script script const app new Vue({ el: #app, data: { username: }, methods: { fn (e) { if(e.key enter) { console.log(键盘回车的时候触发, this.username) } } } }) /script /body2v-model修饰符3事件修饰符div idapp h3v-model修饰符 .trim .number/h3 姓名input v-model.trimusername typetextbr 年纪input v-model.numberage typetextbr h3事件名.stop → 阻止冒泡/h3 div clickfatherFn classfather div click.stopsonFn classson儿子/div /div h3事件名.prevent → 阻止默认行为/h3 a click.prevent hrefhttp://www.baidu.com阻止默认行为/a /div script src./vue.js/script script const app new Vue({ el: #app, data: { username: , age: , }, methods: { fatherFn () { alert(老父亲被点击了) }, sonFn () { alert(儿子被点击了) } } }) /script2.v-bind对于样式操作的增强1操作class语法:class 对象/数组style .box { width: 200px; height: 200px; border: 3px solid #000; font-size: 30px; margin-top: 10px; } .pink { background-color: pink; } .big { width: 300px; height: 300px; } /style body div idapp div classbox :class{ pink: false, big: true}黑马程序员/div div classbox :class[pink, big]黑马程序员/div /div script src./vue.js/script script const app new Vue({ el: #app, data: { } }) /script /body2操作style语法:style 样式对象适用场景某个具体属性的动态设置style .box { width: 200px; height: 200px; background-color: rgb(187, 150, 156); } /style body div idapp div classbox :style{ width: 400px, height: 400px, backgroundColor: skyblue}/div /div script src./vue.js/script script const app new Vue({ el: #app, data: { } }) /script /body3.v-model应用于其他表单元素style textarea { display: block; width: 240px; height: 100px; margin: 10px 0; } /style body div idapp h3小黑学习网/h3 姓名 input typetext v-modelusername brbr 是否单身 input typecheckbox v-modelisSingle brbr !-- 前置理解 1. name: 给单选框加上 name 属性 可以分组 → 同一组互相会互斥 2. value: 给单选框加上 value 属性用于提交给后台的数据 结合 Vue 使用 → v-model -- 性别: input v-modelgender typeradio namegender value1男 input v-modelgender typeradio namegender value2女 brbr !-- 前置理解 1. option 需要设置 value 值提交给后台 2. select 的 value 值关联了选中的 option 的 value 值 结合 Vue 使用 → v-model -- 所在城市: select v-modelcityId option value101 厦门/option option value102 漳州/option option value103 扬州/option option value104 南京/option /select brbr 自我描述 textarea v-modeldesc/textarea button立即注册/button /div script src./vue.js/script script const app new Vue({ el: #app, data: { username: , isSingle: true, gender: 2, cityId: 102, desc: } }) /script /body二、computed 计算属性1.计算属性1定义基于现有的数据计算出来的新属性。依赖的数据变化自动重新计算。2语法style table { border: 1px solid #000; text-align: center; width: 240px; } th,td { border: 1px solid #000; } h3 { position: relative; } /style body div idapp h3小黑的礼物清单/h3 table tr th名字/th th数量/th /tr tr v-for(item, index) in list :keyitem.id td{{ item.name }}/td td{{ item.num }}个/td /tr /table !-- 目标统计求和求得礼物总数 -- p礼物总数{{ totalCount}} 个/p /div script src./vue.js/script script const app new Vue({ el: #app, data: { // 现有的数据 list: [ { id: 1, name: 篮球, num: 1 }, { id: 2, name: 玩具, num: 2 }, { id: 3, name: 铅笔, num: 5 }, ] }, computed: { totalCount () { // 基于现有的数据编写求值逻辑 // 计算属性函数内部可以直接通过 this 访问到 app 实例 // console.log(this.list) // 需求对 this.list 数组里面的 num 进行求和 reduce let total this.list.reduce((sum, item) sum item.num, 0) return total } } }) /script /body2.computed计算属性 与methods方法1计算属性2方法style table { border: 1px solid #000; text-align: center; width: 300px; } th,td { border: 1px solid #000; } h3 { position: relative; } span { position: absolute; left: 145px; top: -4px; width: 16px; height: 16px; color: white; font-size: 12px; text-align: center; border-radius: 50%; background-color: #e63f32; } /style body div idapp h3小黑的礼物清单span{{ totalCount }}/span/h3 table tr th名字/th th数量/th /tr tr v-for(item, index) in list :keyitem.id td{{ item.name }}/td td{{ item.num }}个/td /tr /table p礼物总数{{ totalCount }} 个/p /div script srchttps://cdn.jsdelivr.net/npm/vue2/dist/vue.js/script script const app new Vue({ el: #app, data: { // 现有的数据 list: [ { id: 1, name: 篮球, num: 3 }, { id: 2, name: 玩具, num: 2 }, { id: 3, name: 铅笔, num: 5 }, ] }, computed: { // 计算属性有缓存的一旦计算出来啊结果就会立刻缓存 // 下次读取 直接读缓存执行 性能特别高 totalCount () { console.log(计算属性执行了) let total this.list.reduce((sum, item) sum item.num, 0) return total } } }) /script /body3.计算属性完整写法语法div idapp 姓input typetext v-modelfirstNamebr 名input typetext v-modellastNamebr p{{ fullName}}/p button clickchangeName修改姓名/button /div script srchttps://cdn.jsdelivr.net/npm/vue2/dist/vue.js/script script const app new Vue({ el: #app, data: { firstName: 灰, lastName: 太狼, }, computed: { // 简写 获取 // fullName () { // return this.firstName this.lastName // } // 完整写法 获取 设置 fullName: { // (1)当fullName计算属性被获取求值时执行get 有缓存优先读缓存 // 会将返回值作为最终的求值结果 get () { return this.firstName this.lastName }, // (2)当fullName计算属性被修改赋值时执行set // 修改的值传递给set 方法的形参 set (value) { this.firstName value.slice(0, 1) this.lastName value.slice(1) } } }, methods: { changeName () { this.fullName 红太狼 } } }) /script4.综合案例三、watch侦听器1.作用监视数据变化执行一些 业务逻辑或异步操作。2.语法1简单写法style * { margin: 0; padding: 0; box-sizing: border-box; font-size: 18px; } #app { padding: 10px 20px; } .query { margin: 10px 0; } .box { display: flex; } textarea { width: 300px; height: 160px; font-size: 18px; border: 1px solid #dedede; outline: none; resize: none; padding: 10px; } textarea:hover { border: 1px solid #1589f5; } .transbox { width: 300px; height: 160px; background-color: #f0f0f0; padding: 10px; border: none; } .tip-box { width: 300px; height: 25px; line-height: 25px; display: flex; } .tip-box span { flex: 1; text-align: center; } .query span { font-size: 18px; } .input-wrap { position: relative; } .input-wrap span { position: absolute; right: 15px; bottom: 15px; font-size: 12px; } .input-wrap i { font-size: 20px; font-style: normal; } /style body div idapp !-- 条件选择框 -- div classquery span翻译成的语言/span select option valueitaly意大利/option option valueenglish英语/option option valuegerman德语/option /select /div !-- 翻译框 -- div classbox div classinput-wrap textarea v-modelobj.words/textarea spani⌨️/i文档翻译/span /div div classoutput-wrap div classtransbox{{ result }}/div /div /div /div script src./vue.js/script script src./axios.js/script script // 接口地址https://applet-base-api-t.itheima.net/api/translate // 请求方式get // 请求参数 // 1words需要被翻译的文本必传 // 2lang需要翻译成的语言可选默认值-意大利 const app new Vue({ el: #app, data: { // words: , obj: { words: }, result: , // 翻译结果 // timer: null // 延时器id }, // 具体讲解(1) watch语法 (2) 具体业务实现 watch: { // 该方法会在我数据变化时调用执行 // newValue新值oldValue老值一般不用 // words (newValue) { // console.log(变化了, newValue) // } obj.words (newValue) { // console.log(变化了, newValue) // 防抖延迟执行 干啥事先等一等延迟一会一段时间内没有再次触发才执行 clearTimeout(this.timer) this.timer setTimeout(async () { const res await axios({ url: https://applet-base-api-t.itheima.net/api/translate, params: { words: newValue } }, 300) this.result res.data.data }) } } }) /script /body2完整写法 → 添加额外配置项style * { margin: 0; padding: 0; box-sizing: border-box; font-size: 18px; } #app { padding: 10px 20px; } .query { margin: 10px 0; } .box { display: flex; } textarea { width: 300px; height: 160px; font-size: 18px; border: 1px solid #dedede; outline: none; resize: none; padding: 10px; } textarea:hover { border: 1px solid #1589f5; } .transbox { width: 300px; height: 160px; background-color: #f0f0f0; padding: 10px; border: none; } .tip-box { width: 300px; height: 25px; line-height: 25px; display: flex; } .tip-box span { flex: 1; text-align: center; } .query span { font-size: 18px; } .input-wrap { position: relative; } .input-wrap span { position: absolute; right: 15px; bottom: 15px; font-size: 12px; } .input-wrap i { font-size: 20px; font-style: normal; } /style body div idapp !-- 条件选择框 -- div classquery span翻译成的语言/span select v-modelobj.lang option valueitaly意大利/option option valueenglish英语/option option valuegerman德语/option /select /div !-- 翻译框 -- div classbox div classinput-wrap textarea v-modelobj.words/textarea spani⌨️/i文档翻译/span /div div classoutput-wrap div classtransbox{{ result }}/div /div /div /div script src./vue.js/script script src./axios.js/script script // 需求输入内容修改语言都实时翻译 // 接口地址https://applet-base-api-t.itheima.net/api/translate // 请求方式get // 请求参数 // 1words需要被翻译的文本必传 // 2lang需要翻译成的语言可选默认值-意大利 const app new Vue({ el: #app, data: { // words: , obj: { words: 小黑, lang: italy }, result: , // 翻译结果 }, // 具体讲解(1) watch语法 (2) 具体业务实现 watch: { obj: { deep: true, // 深度监视 immediate: true, // 立刻执行一进页面handler就立刻执行 handler (newValue) { clearTimeout(this.timer) this.timer setTimeout(async () { const res await axios({ url: https://applet-base-api-t.itheima.net/api/translate, params: newValue }, 300) this.result res.data.data }) } } // obj.words (newValue) { // clearTimeout(this.timer) // this.timer setTimeout(async () { // const res await axios({ // url: https://applet-base-api-t.itheima.net/api/translate, // params: { // words: newValue // } // }, 300) // this.result res.data.data // }) // } } }) /script /body四、综合案例五、生命周期1.生命周期 生命周期四个阶段2.生命周期钩子3.综合案例body div idapp h3{{ title }}/h3 div button clickcount---/button span{{ count }}/span button clickcount/button /div /div script src./vue.js/script script const app new Vue({ el: #app, data: { count: 100, title: 计数器 }, // 1. 创建阶段准备数据 beforeCreate () { console.log(beforecreate 响应式数据准备好之前, this.count) }, created () { console.log(created 响应式数据准备好之后, this.count) // this.数据名 请求回来的数据 // 可以开始发送初始化渲染的请求了 }, // 2. 挂载阶段渲染模板 beforeMount () { console.log(beforemount 模板渲染之前, document.querySelector(h3).innerHTML) }, mounted () { console.log(mounted 模板渲染之后, document.querySelector(h3).innerHTML) // 可以开始操作dom了 }, // 3.更新阶段修改数据 更新视图 beforeUpdate () { console.log(beforeUpdate 数据修改了视图还没更新, document.querySelector(span).innerHTML) }, updated () { console.log(updated 数据修改了视图已经更新, document.querySelector(span).innerHTML) }, // 4.卸载阶段 beforeDestroy () { console.log(beforeDestroy 卸载前) console.log(清除掉一些Vue以外的资源占用定时器延时器···) }, destroyed () { console.log(destroyed 卸载后) } }) /script /body六、综合案例

相关新闻

提示设计用户协作全流程检查清单(架构师版)

提示设计用户协作全流程检查清单(架构师版)

2026/7/8 4:46:57 阅读更多 →
【Java 新手必看】比较运算符:从概念到实战,附可运行代码案例

【Java 新手必看】比较运算符:从概念到实战,附可运行代码案例

2026/7/8 8:21:09 阅读更多 →
【读论文】EQ情感智能benchmark:EmoBench

【读论文】EQ情感智能benchmark:EmoBench

2026/7/8 16:06:13 阅读更多 →

最新新闻

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗”

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗”

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗” 如果你还以为网络安全就是“修电脑、杀病毒”,那你的认知该更新了。现在的真实行情是:全国网络安全人才缺口已突破150万,企业拿着高薪都招不到人。有3年经验…

2026/7/9 16:56:56 阅读更多 →
AI训练数据版权争议:苹果被诉非法抓取YouTube视频

AI训练数据版权争议:苹果被诉非法抓取YouTube视频

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来关注一个涉及AI训练数据来源的重要法律争议。苹果公司被三家YouTube频道起诉,指控其非法抓取数百万段受版权保护…

2026/7/9 16:54:55 阅读更多 →
三张财务报表怎么看?利润、资产、现金流要串起来理解

三张财务报表怎么看?利润、资产、现金流要串起来理解

做经营分析这些年,我发现一个很普遍的问题。 很多企业的财务报表做得越来越细; 管理报表越来越厚; 但真正能回答经营问题的分析却越来越少。 老板看利润表,发现利润增长了,觉得经营不错; 财务看资产负…

2026/7/9 16:52:55 阅读更多 →
C++队列数据结构实现:从数组循环队列到链表动态队列的底层原理与实战

C++队列数据结构实现:从数组循环队列到链表动态队列的底层原理与实战

1. 项目概述:为什么需要自己动手实现队列?在C的世界里,提到队列,很多人的第一反应就是STL里的std::queue。它封装得很好,拿来就用,确实方便。但作为一个有追求的C开发者,尤其是在面试、学习底层…

2026/7/9 16:50:54 阅读更多 →
学生综合成绩测评系统-springboot + vue

学生综合成绩测评系统-springboot + vue

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于springboot vue的学生综合成绩测评系统 前台登录网址: http://localhost:808…

2026/7/9 16:50:54 阅读更多 →
Cursor企业级工程化配置与AI编码范式实战

Cursor企业级工程化配置与AI编码范式实战

1. 这不是又一个“AI编程工具”教程,而是企业级代码生产力的实操切片你点开这个标题,大概率正被三件事压着:需求排期像雪崩、CRUD写到手抽筋、新项目启动时连环境都搭不齐。我带过七支不同行业的技术团队,从金融风控系统到智能硬件…

2026/7/9 16:48:53 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻