irpas技术客

Vue-快速入门_浅浅的程序员

irpas 6627

参考视频黑马程序员vue前端基础教程-4个小时带你快速入门vue_哔哩哔哩_bilibili 一、导包

要先把最主要的Vue包导入才能正式的开始学习,参考文档介绍 — Vue.js (vuejs.org)

运行第一个vue程序: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="app"> {{ massage }} </div> //两种环境可选 <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ massage:'你好', } }) </script> </body> </html>
el 挂载

针对以下代码的? ?el (挂载)? 属性

var app = new Vue({ el:"#app", data:{ massage:'你好', } })

id选择器? ? ? ? el:"#app"? ?->推荐

class选择器? ?el:".app"

标签选择器? ? el:"div" 等各种标签? 标签仅支持双标签 并且不支持body、html标签


data? 数据 对应的值可以在里面用{{key}}表示,数组使用下标表示发,同时
v-text

v-text指令的作用是:设置标签的内容(trxtContent)

默认写法会替代全部的内容,使用差值表达式{{}}可以替换指定的内容

<body> <div id="app"> <h2 v-text="massage +'!'"> </h2> <h2 v-text="info"></h2> <h2>{{massage}}+!</h2> <!-- 可实现拼接操作 --> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ massage:'你好', info:"小谭工作室" } }) </script> </body>

显示内容:


v-html

v-html指令的作用是:设置元素的innerHTML

内容中有html结构会被解析为标签

v-text指令无论内容是什么,只会解析为文本

解析文本使用v-text,需要解析html结构使用v-html

<body> <div id="app"> <h2 v-text="massage"> </h2> <h2 v-html="massage"></h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ massage:"<a href='https://·'>百度一下</a>" } }) </script> </body>

?显示内容


v-on? methods 方法

v-on指令的作用是:为元素绑定事件

事件名不需要写on

指令可以简写为@

绑定的方法定义在methods属性中

<body> <div id="app"> <input type="button" value="v-on指令" v-on:click="doit" /> <input type="button" value="v-on简写" @click="doit"> <input type="button" value="双击事件" @dblclick="qq"> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ }, methods:{ doit:function(){ alert("当世俗不再厌倦的时候,我也不再到来! ") }, qq:function(){ alert("经历不止") } } }) </script> </body>

显示内容:

单击后响应:

事件的添加:

<body> <div id="app"> <h3 id="app" @click="changeFood"> {{massage}}</h3> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ massage:"重庆小面" }, methods:{ changeFood:function(){ this.massage+="好好吃!" } } }) </script> </body>

页面显示:

单击之后:


实现一个计数器: <body> <div id="app"> <span><button @click="del">-</button> </span> <span>{{num}}</span> <span><button @click="add">+</button></span> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ num:1 }, methods:{ add:function(){ //console.log(this.num) if(this.num<10){ this.num++; } else { alert("数量大于10") } }, del:function(){ //console.log(this.num) if(this.num>0){ this.num--; } else{ alert("数量少于0") } } } }) </script> </body>

显示结果:


v-show

v-show指令的作用是:根据真假切换元素的显示状态

原理是修改元素的display,实现显示隐藏

指令后面的内容,最终都会被解析为布尔值--(可写表达式)

值为true元素显示,值为false元素隐藏

数据改变之后,对应元素的显示状态会同步更新

<body> <div id="app"> <button @click="change">切换状态</button> <img v-show="isShow" src="./img/001.jpg" > </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ isShow :false }, methods:{ change:function(){ this.isShow = !this.isShow } } }) </script> </body>

显示内容:


v-if

v-if指令的作用是:根据表达式的真假切换元素的显示状态

本质是通过操作dom元素来切换显示状态

表达式的值为true,元素存在与dom树中,为false,从dom树中移除

<body> <div id="app"> <input type="button" value="切换显示" @click="toIsShow"> <p v-if="isShow">浅浅的程序员</p> <p v-show="isShow">浅浅的程序员 - v-show修饰</p> <input type="button" value="增加" @click="toIfShowAdd"> <input type="button" value="减少" @click="toIfShowDel"> <h2 v-if="toIfShow>=18">条件判断</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ isShow :false, toIfShow:17 }, methods:{ toIsShow:function(){ this.isShow = !this.isShow }, toIfShowAdd:function(){ this.toIfShow++; }, toIfShowDel:function(){ this.toIfShow--; } } }) </script> </body>

显示内容:

?


v-bind

v-bind 指令的作用是:为元素绑定属性

完整写法是v-bind:属性名

简写的话可以直接省略v-bind,只保留:属性名

需要动态增删class建议使用对象的方式

<body> <style> .active{ border: 10px solid red; } </style> <div id="app"> <img v-bind:src="imgSrc" alt=""> <br> <img :src="imgSrc" alt="" :title="imgTitle+'浅浅的程序员'" :class="isActive?'active':''" @click="toggleActive"> <br> <img :src="imgSrc" alt="" :title="imgTitle+'浅浅的程序员'" :class="{active:isActive}" @click="toggleActive"> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ imgSrc:"./img/001.jpg", imgTitle:"小猫壁纸", isActive:false }, methods:{ toggleActive:function(){ this.isActive = !this.isActive } } }) </script> </body>

展示内容:


案例:

实现图片的切换

<body> <div id="app"> <div><input type="button" value="上一张" v-show="index!=0" @click="prev"></div> <div><img :src="imgSrc" alt="" width="576px" height="324px"></div> <div><input type="button" value="下一张" v-show="index!=imgArr.length-1" @click="next"></div> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ imgArr:[ //注意路径的反斜杠 "./img/000.jpg", "./img/001.jpg", "./img/002.jpg", "./img/003.jpg", "./img/004.jpg", "./img/005.jpg", "./img/006.jpg" ], index:0, isOpen:true, imgSrc:"./img/000.jpg" }, methods:{ prev:function(){ this.index--, this.imgSrc=this.imgArr[this.index] }, next:function(){ this.index++, this.imgSrc=this.imgArr[this.index] } } }) </script> </body>

效果图:


v-for

v-for?指令的作用是:根据数据生成列表结构

数组经常和 v-for 结合使用

语法是 (item,index) in 数据

item 和 index 可以结合其他指令一起使用

数组长度的更新会同步到页面上,是响应式的

<body> <div id="app"> <input type="button" value="添加数据" @click="add"> <input type="button" value="删除数据" @click="remove"> <ul> <li v-for="(item,index) in arr"> 第{{ index+1 }}个数据是:{{ item }} </li> </ul> <h2 v-for="item in eat" v-bind:title="item.name"> {{ item.name }} </h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ arr:["重庆","四川","贵州","云南"], eat:[ {name:"炸鸡配汉堡"}, {name:"可乐配薯条"}, {name:"秀才配闺房"} ] }, methods:{ add:function(){ this.eat.push({name:"祖国为人民"}) }, remove:function(){ this.eat.shift(); } } }) </script> </body>

显示效果:


v-on补充

更多参考:API — Vue.js (vuejs.org)

事件绑定的方法写成函数调用的形式,可以传入自定义参数

定义方法时需要定义形参来接收传入的实参

事件的后面跟上 .修饰符 可以对事件进行限制 .enter 可以限制触发的按键为回车 <body> <div id="app"> <input type="button" value="点击" @click="doIt('拿高薪','掉头发')"> <input type="text" @keyup.enter="sayHi"> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", methods:{ doIt:function(p1,p2){ console.log("做it"); console.log(p1) console.log(p2) }, sayHi:function(){ alert("你好,小谭!") } } }) </script> </body>

显示效果:


v-mode

v-model 指令的作用是便捷的设置和获取表单元素的值

绑定的数据会和表单元素值相关联

绑定的数据<—双向绑定—>表单元素的值

<body> <div id="app"> <input type="button" value="修改message" @click="setM"> <input type="text" v-model="message" @keyup.enter="getM"> <h2> {{ message }} </h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ message:"浅浅的工作室" }, methods:{ setM:function(){ alert(this.message) }, getM:function(){ this.message="小谭工作室" } } }) </script> </body>

显示效果:

关于Vue的基础用法已经完结


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Vue快速入门