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

Vue01

Vue的基本概述

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- 一旦引入的vue核心包,就可以全局使用 --> <script src="js/vue.js"></script> </head> <body> <!-- 创建vue实例需要的步骤 1.准备一个容器(vue渲染数据的范围) 2.引入vue环境 3.创建vue实例 4.添加vue实例的配置项 4.1 el挂载点 4.2 data准能被数据 --> <div id="app"> <!-- 插值表达式,我们将来要进行一个数据的渲染就使用这种方式,插值表达式里面定义data里面的变量名称 --> {{msg}} <br> {{name}} </div> <script> const v = new Vue({ // 通过el我们可以配置选择器,这样可以定位到vue实例所作用的容器 el:"#app", // 通过data可以定义数据,在容器里面渲染的就是data的数据 data:{ msg:"hello vue", name:"eric", } }) </script> </body>

几种错误的使用情况:

1.渲染data中没有定义的数据

2.不要在插值表达式中写if这样的判断

3.不要再html属性中写插值表达式

正确写法

Vue指令

<style> .box{ width: 200px; height: 100px; line-height: 100px; border:2px red solid; margin: 3px; } </style> </head> <body> <!-- v-show和v-if都是控制HTML元素的显示和隐藏 如果值为true会显示,否则隐藏 v-show和v-if的区别: 在隐藏元素时,show通过隐藏样式(display:none)的方式, if通过将当前的dom元素删除掉 --> <div id="app"> <div v-show="flag" class="box">演示v-show的使用</div> <div v-if="flag" class="box">演示v-if的使用</div> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ flag:true } }) </script>

<body> <div id="app"> <p v-if="sex==1">性别:男</p> <p v-else>性别:女</p> <hr> <p v-if="score>=90">成绩等级A:优秀</p> <p v-else-if="score>=80">成绩等级B:良好</p> <p v-else-if="score>=60">成绩等级C:合格</p> <p v-else>成绩等级D:不合格</p> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ sex:2, score:67 } }) </script>

<body> <div id="app"> <button @click="count=count-1" type="button">-</button> <span>{{count}}</span> <button @click="count=count+1" type="button">+</button> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ count:100, } }) </script>

<body> <div id="app"> <button @click="fn1" type="button">显示与隐藏</button> <div v-show="flag">这是一个box</div> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ flag:true, }, methods:{ //用来定义处理函数 //如果要在methods中使用data中的数据,我们可以使用 //Vue实例.属性名的方式来引用 //也可以使用this动态的指向当前动态实例 fn1(){ this.flag = !this.flag; } } }) </script>

<body> <div id="app"> <div style="margin-bottom: 15px; width: 250px; border: 3px black solid;border-radius: 5px;"> <h3>自动售货机</h3> <button @click="todec(5)" type="button">可乐5元</button> <button @click="todec(8)" type="button">牛奶8元</button> <button @click="todec(10)" type="button">咖啡10元</button> </div> <div> <p>银行卡余额:{{money}}元</p> </div> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ money:100, }, methods:{ todec(price){ if(this.money<price){ alert("余额不足"); return; } this.money-=price; }, dec5(){ this.money-=5; }, dec8(){ this.money-=8; }, dec10(){ this.money-=10; } } }) </script>

图片的上下页切换

<body> <div id="app"> <!-- <img v-bind:src="imgUrl" v-bind:alt="Alt" v-bind:title="Title"> --> <!-- v-bind是给html属性动态设置值,也可以:属性名称=值 eg: :src="" :alt="" :title="" --> <img :src="imgUrl"> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ imgUrl:"https://img1.baidu.com/it/u=302146640,1270496570&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1067", Alt:"五五上", Title:"无无山", } }) </script>
<body> <div id="app" > <!-- 只有当前这一页下标不是0才显示可以上一页 --> <button v-show="index!=0" @click="index--" type="button">上一页</button> <div> <img style="height: 200px;" :src="list[index]" alt="haha"> </div> <button v-show="index!=5" @click="index++" type="button">下一页</button> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ index:0, list:[ "https://img1.baidu.com/it/u=882687410,353298960&fm=253&app=138&f=JPEG?w=500&h=667", "https://img1.baidu.com/it/u=2211909947,1090713287&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1155", "https://img0.baidu.com/it/u=3378675194,2222160237&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=667", "https://img2.baidu.com/it/u=124634888,3066510728&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=667", "https://img1.baidu.com/it/u=2413649154,1697438573&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=667", "https://img2.baidu.com/it/u=3606113107,1124599065&fm=253&app=138&f=JPEG?w=500&h=501" ], } }) </script>

<body> <div id="app"> <ul> <!-- 遍历数组 --> <li v-for="(item,i) in arr"> {{item}} -- {{i}} </li> </ul> <ul> <li v-for="(item) in arr"> {{item}} </li> </ul> <ul> <!-- 遍历对象 --> <li v-for="(v,key,io) in person"> {{v}} {{person}} {{io}} </li> </ul> <ul> <!-- 遍历对象数组 --> <li v-for="(item) in emps"> 姓名:{{item.name}}, 年龄:{{item.age}} </li> </ul> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ arr:["白菜","黄瓜","胡萝卜","豆荚"], person:{ name:"kobe", age:19, address:"USA" }, emps:[ { name:"kobe", age:18, address:"USA" },{ name:"james", age:16, address:"USA" },{ name:"lebra", age:17, address:"USA" } ] } }) </script>

图书信息的展示和删除操作

<body> <div id="app"> <li v-for="(item) in books"> {{item.name}}--{{item.author}}<button @click="del(item.id)" type="button">删除</button> </li> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ books:[ {id:1,name:"《红楼梦》",author:"曹雪芹"}, {id:2,name:"《西游记》",author:"吴承恩"}, {id:3,name:"《水浒传》",author:"施耐庵"}, {id:4,name:"《三国演义》",author:"罗贯中"} ] }, methods:{ del(id){ //根据id删除数组中的元素,根据filter方法 //filter过滤规则是:如果数组中的每个元素的id与当前的id不相等,就将其过滤出来,然后放在一个新数组中 this.books = this.books.filter(ite => ite.id!==id); } } }) </script>

-key的使用

<body> <!-- 循环列表时,我们要习惯个每一个li列表添加一个唯一标识 eg: :key="唯一值" 这样在删除时可以将li删除干净 --> <div id="app"> <li :key="item.id" v-for="(item) in books"> {{item.name}}--{{item.author}}<button @click="del(item.id)" type="button">删除</button> </li> </div> </body>
http://www.gsyq.cn/news/1489718.html

相关文章:

  • 怎样同时采集美团和饿了么两个平台的竞品数据?——2026跨平台AI Agent自动化实战指南
  • 基于spark的南宁空气质量评估与预测系统的设计与实现
  • 陈刚直言 | 华为韬(τ)定律启示:发起 AMT2ABC 开源生态
  • Diablo Edit2:暗黑破坏神2终极存档编辑与角色修改器完全指南
  • C++ 面向对象核心机制深度解析:多态性、虚函数、虚继承与 final 类
  • 2026年售后完善的上门搬家机构收费贵吗 - mypinpai
  • 3分钟搞定XAPK转APK:这款无依赖Python工具让你告别安装烦恼
  • 赤火时代水淬炉,好用又靠谱,性价比超高 - 工业品牌热点
  • 时事蹭热度系列之四:那个哭着返校的女孩,让我重新思考了教育
  • 今日开源[第12期]LiteParse - zhang
  • 信号处理实战:用db4小波四层分解,从Matlab分析到C语言移植的避坑指南
  • 鸿蒙原生 ArkTS:border 的盒模型、深层嵌套约束传递与 scale 缩放
  • MATLAB R2021b + UE4.25联合仿真避坑实录:手把手解决插件路径找不到的报错
  • Java 开发 - Jar 包与 War 包
  • 从二维码到Apriltag:为什么你的机器人视觉项目该用tag36H11做标定?
  • 数字签名用于**验证数据来源的真实性、完整性和不可否认性**,其核心是使用私钥签名、公钥验签,适用于身份认证、文档签署、软件分发等场景
  • 三重核心竞争力成型|融景科技凭自研软著、国标一级资质、中铁华润等头部客户领跑 AI 搜索排名优化赛道 - 广东科技观察
  • 如何高效使用Cyber Engine Tweaks:5大功能模块全面解析与实战指南
  • 3分钟快速上手:浏览器Cookie管理神器完全指南
  • 北京绩效纠纷,杨斯童律师收费标准? - mypinpai
  • 恒温恒湿机厂家技术实力拆解及实地服务地址指南:厂房新排风/商用新排风工程/四川恒温恒湿机定制/实验室恒温恒湿机/选择指南 - 优质品牌商家
  • 2026年5月五金数控车铣零部件厂商排行实测盘点:不锈钢格栅、不锈钢钣金件、不锈钢雨水算子、五金冲压件定制、五金折弯件选择指南 - 优质品牌商家
  • 通化古董古玩回收商家甄选:通化市钱币古董回收/通化市钻石回收/通化老酒名酒回收/通化老钱币古董回收/通化高端名表回收/选择指南 - 优质品牌商家
  • config/WebMvcConfig.java
  • 影响交换机箱体使用寿命的几个关键因素
  • 2026年武嘉数控好用吗? - mypinpai
  • 2026年10款论文降AIGC工具实测:从90%降至10%的硬核之选
  • SNN实战避坑:在1核4G云服务器上跑MNIST,我的权重文件和Theta值都存对了么?
  • 5 家权威测评认证——典典佳汇黄金 名酒回收双榜第一,靠谱实力全城公认! - 诚鑫名品
  • 告别Vivado自带编辑器:手把手教你配置VSCode作为ZYNQ开发主力(附TabNine AI补全技巧)