news 2026/5/16 4:51:45

Vue学习 day.1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue学习 day.1

一.Vue认识

一个用于构建用户界面的渐进式框架
1.构建用户界面:基于 数据 动态渲染 页面
2.渐进式:循序渐进的学习
3. 框架:一套完整的项目解决方案,提升开发效率个(理解记忆规则)
规则→官网

二.初步学习

1.创建一个Vue实例 初始化渲染

(1)准备容器(Vue所管理的范围)图中的app

(2)引包(开发版本包/生产版本包)--官网找

(3)创建实例

const app=new Vue({ })

(4)添加配置项

el:指定挂载点 和 data ,完成渲染

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- 创建Vue实例 初始化渲染 1.准备容器(Vue所管理的范围) 2.引包(开发版本包/生产版本包)--官网找 3.创建实例 4.添加配置项 el(指定挂载点) data =》完成渲染 --> <div class="box"> {{msg}} <!-- 因为已经指定了el为app 所以此处不会有msg --> </div> <div id="app"> <!-- 这里将来会编写一些用于渲染的代码逻辑 --> <h1>{{msg}}</h1> <a href="">{{count}}</a> </div> <!-- 引入的是开发版本包 --包含完整的注释和警告 --> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> <script> //一旦引入VueJS核心包 在全局环境 就有了Vue构造函数 const app=new Vue({ //通过el去配置选择器 指定Vue管理的是哪个盒子 el:'#app', //通过data提供数据 data:{ msg:'Hello 黑马', count:666 } }) </script> </body> </html>

2.插值表达式

作用:利用 表达式 进行插值渲染

语法:{{表达式}}

注意点:

1.使用的数据要存在

2.支持的表达式,不是语句 if for

3. 不能在标签属性中使用{{ }

3.响应式

/data中的数据 是会被添加到实例上

//1.访问数据 实例.属性名

//2.修改数据 实例.属性名=新值

4.Vue指令

控制显示与隐藏:

v-show:

切换css的display:none 来控制显示隐藏

v-if

底层原理:根据判断条件 控制元素的显示隐藏(条件渲染)

条件类:

v-if="表达式":

v-else-if

"表达式":必须有v-if才能用

点击等:

v-on

:click=" 表达式"或者@click="表达式"

搭配methods里面的函数

<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="app"> <button @click="fn">切换显示隐藏</button> <h1 v-show="isShow">黑马</h1> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> <script> const app3=new Vue({ el:'#app', data:{ isShow:true }, methods:{ // 提供处理逻辑函数 fn(){ //让提供的所以methods中的函数,this都指向当前实例 // console.log('执行力fn',app.isShow) // console.log(app3===this) this.isShow=!this.isShow // app3.isShow=!app3.isShow } } }) </script> </body> </html>
可以调用传参

v-bind:

1.作用:动态的设置html的标签属性→srcurltitle
2. 语法:v-bind:属性名="表达式"
3.注意:简写形式:属性名=”表达式”

v-for:

递归渲染

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="app"> <h3>小黑水果店</h3> <ul> <li v-for="(item,index) in list">{{item}}--{{index}}</li> </ul> <ul> <li v-for="(item) in list">{{item}}</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> <script> const app=new Vue({ el:'#app', data:{ list:['西瓜','苹果','鸭梨'] } }) </script> </body> </html>

v-model:

可以让数据和视图,形成双向数据绑定

(1)数据变化,视图自动更新

(2)视图变化,数据自动更新

可以快速[获取]或[设置]表单元素的内容

综合案例:记事本

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="app"> <header class="header"> <h1>记事本</h1> <input type="text" v-model="todoName" placeholder="输入任务" class="new-todo"> <button class="add" @click="add">添加</button> </header> <section class="main"> <ul class="todo-list"> <li class="todo" v-for="(item,index) in list" :key="item.id"> <div class="view"> <span class="index">{{index+1}}</span><label for="">{{item.name}}</label> <button class="destroy" @click="del(item.id)">删除</button> </div> </li> </ul> </section> <!-- 统计和清空->如果没有任务了,底部隐藏掉->v-show --> <footer class="footer" v-show="list.length>0"> <span class="todo-count">合计:<strong>{{list.length}}</strong></span> <!-- 清空 --> <button class="clear-completed" @click="clear">清空任务</button> </footer> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> <script> //添加功能 //1.通过v-model绑定 输入框->实时获取表单元素的内容 //2.点击按钮,进行新增,往数组 const app=new Vue({ el:'#app', data:{ todoName:'', list:[ {id:1,name:'跑步1km'}, {id:2,name:'跳绳20min'}, {id:3,name:'游泳20min'}, ] }, //删除功能 methods:{ del(id){ // console.log(id)=>filter 保留所有不等于该id的项 this.list=this.list.filter(item=>item.id!==id) }, add(){ if(this.todoName.trim()===''){ alert('输入任务名称') return } this.list.unshift({ id:+new Date(), name:this.todoName }) this.todoName='' }, clear(){ this.list=[] } } }) </script> </body> </html>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 1:47:01

【递归算法】快速幂解决 pow(x,n)

题目链接&#xff1a;pow(x,n) 一、题目解析 题目很简单&#xff0c;要求x的n次幂。 要注意n的取值范围&#xff1a;n可能是负数&#xff0c;这时候我们要利用数学中 x⁻ⁿ 1 / xⁿ 来转换&#xff1b;n可能是 -2&#xff0c;若转换成正数则会超过 int 类型的最大取值 2-1。…

作者头像 李华
网站建设 2026/5/15 22:17:40

基于51单片机的智能水表检测水流量计流量报警器 水表 嵌入式diy

目录 硬件组成软件设计功能扩展注意事项参考方案 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 硬件组成 51单片机&#xff08;如STC89C52&#xff09;作为核心控制器&#xff0c;搭配霍尔传感器或涡轮流量计检测水流速&#xff0c;…

作者头像 李华
网站建设 2026/5/9 22:07:50

Phlux 传感器引起射击界的关注

无噪声 InGaAs 红外传感器正接受评估&#xff0c;拟应用于高端狩猎与专业射击光学设备红外雪崩光电二极管&#xff08;APD&#xff09;传感器制造商 Phlux Technology 宣称&#xff0c;其拥有专利的无噪声 InGaAs 红外传感器&#xff0c;已在严苛的国防、电信及工业应用中得到验…

作者头像 李华
网站建设 2026/5/3 4:18:37

一天一个开源项目(第2篇):Remotion - 用 React 程序化创建视频

引言 “如果视频制作也能像写代码一样&#xff0c;用组件、函数和逻辑来构建&#xff0c;那该多好&#xff1f;” 这是"一天一个开源项目"系列的第2篇文章。今天带你了解的项目是 Remotion&#xff08;GitHub&#xff09;。 想象一下&#xff0c;你不再需要打开 Aft…

作者头像 李华
网站建设 2026/5/12 19:58:24

第三十二周周报

文章目录 摘要Abstract一、论文的基本思想和贡献基本思想主要贡献 二、研究背景三、模型介绍四、Training1.初始化2、数据增强3、平铺策略 总结 摘要 本周阅读了经典图像分割论文 U-Net&#xff0c;重点学习了其网络结构设计与推理策略。论文提出对称的编码器–解码器架构&…

作者头像 李华