一、vue.js基本的语法

1.1vue.js是什么?



Vue.js(读音 /vjuː/,类似于 view 的读音)是一套构建用户界面(user interface)的渐进式框架。与其他重量级框架不同的是,Vue
从根本上采用最小成本、渐进增量(incrementally adoptable)的设计。Vue
的核心库只专注于视图层,并且很容易与其他第三方库或现有项目集成。另一方面,当与单文件组件
<https://vuefe.cn/v2/guide/single-file-components.html>和 Vue 生态系统支持的库
<https://github.com/vuejs/awesome-vue#components--libraries>结合使用时,Vue
也完全能够为复杂的单页应用程序提供有力驱动。

如果你想在深入学习 Vue 之前了解更多信息,我们创建了一个视频 <https://vuefe.cn/v2/guide/index.html#>
,完整地梳理了 Vue 的核心理念,以及配合一个示例项目讲解。

如果你是有经验的前端开发人员,想知道 Vue.js 与其它库/框架(library/framework)之间的对比,请查看对比其它框架
<https://vuefe.cn/v2/guide/comparison.html>。




1.2 首先我们先下载一个vue.js

网址:https://vuefe.cn/v2/guide/installation.html



点击开发环境下载文件 :vue.js文件。

1.3首先了解一下,vue.js基本语法

v-model
<script src="js/vue.js" type="text/javascript"
charset="utf-8"></script>以后都要先引用这个<!DOCTYPE html> <html> <head> <meta
charset="UTF-8"> <title></title><script src="js/vue.js" type="text/javascript"
charset="utf-8"></script> </head> <body> <!--定义一个id--> <div id="app"> <div>
<!--v-model中的name其实是js中app.data.name 的数据--> <input type="text" v-model="name"/>
<!--{{ }} 用于输出对象属性和函数返回值。{{name}}找寻的数据是js中app.data.name 的数据--> <span
v-show="name">你的名字:{{name}}</span> </div>
<!--总结就是所有找到的数据都是找js中的app.data.相对的数据名--> <div> <input type="text" v-model="age"
/> <span v-show="age"> 你的年龄:{{age}}</span> </div> <div> <input type="text"
v-model="sex" /><!--在视觉上隐藏span中的属性,有两种方法:
1、v-show="sex"意思是如果sex的值为true的在显示出来,如果值为false,就不显示,他和v-if的区别就在于v-show永远都在dom只是显不现实
2、v-if="sex"当值为false的时候,这个元素直接就从dom中删除了,当值为ture时显示出来,他和v-show显示的效果是一样的--> <span
v-show="sex">你的性别:{{sex}}</span> </div> </div> </body> <script
type="text/javascript">//定义所有的数据都在这里 var app = new Vue({ //它是 DOM 元素中的
id,可以找到页面的指向 el:"#app", //用于定义属性, data:{ name:"a",//定义字符串初始值
age:10,//可定义number初始值 sex:null,//当不定义时会报错,但是当定义成null时,就是将初始值定义为空 },// 用于定义的函数
methods:{ } }) </script> </html>
上面显示了vue.js基本的一些语法和调用,实现了双向的绑定




就是当我们在框中输入内容的时候,外面的内容也会跟着变

1.3.1v-model的三个常用指令(好用,安全,功能全)

v-model.lazy:惰性更新,他不会马上的更新,只会当我们点击空白的时候会更新

v-model.trim:去掉前面的空格

v-model.number:将数据转化成数值型


1.3.2v-model 在其他元素及类型上的用法

我们之前就是直接用‘’name‘’中定义相同的名字实现单选
<div id="app"> <label> 男<input type="radio" name="sex" value="male" />
</label> <label> 女<input type="radio" name="sex" value="female" /> </label>
</div>
现在我们用v-model来实现 单选框的选择
<body> <div id="app"> <label> 男<input v-model="sex" type="radio" value="male"
/> </label> <label> 女<input v-model="sex" type="radio" value="female" />
</label> {{sex}} </div> </body> <script type="text/javascript"> var app = new
Vue({ el:'#app', data:{ sex:'male', } }) </script>
现在我们用v-model来实现 复选框的选择

当你选择的时候他会自动插入到数组中,当你勾选掉的时候又可以自动的删除,当然我们也可以在js的sex["male"]设置成默认值
<body> <div id="app"> <label> 男<input v-model="sex" type="checkbox"
value="male" /> </label> <label> 女<input v-model="sex" type="checkbox"
value="female" /> </label> {{sex}} </div> </body> <script
type="text/javascript"> var app = new Vue({ el:'#app', data:{ sex:[], } })
</script>


当我们在textarea中
<body> <div id="app"> <textarea v-model="article"></textarea> </div> </body>
<script type="text/javascript"> var app = new Vue({ el:'#app', data:{
article:'dgrehrthrtyujtyujetysfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' }
}) </script>
当我们在select的时候,原来的方式是
<div id="app"> <div>你是</div> <select> <option value="1">男</option> <option
value="2">女</option> </select> </div>
当我们使用v-model时就可以轻松的设置默认值
<body> <div id="app"> <div>你是</div> <select v-model="sex"> <option
value="1">男</option> <option value="2">女</option> </select> {{sex}} </div>
</body> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{
//这个默认为空 // sex:null, //默认为男 sex:1, } }) </script>
这时我们想实现多选
<body> <div id="app"> <div>你是</div> <select v-model="sex"> <option
value="1">男</option> <option value="2">女</option> </select> {{sex}}
<div>你的爱好</div> <select v-model="hobby" multiple="multiple"> <option
value="1">吃</option> <option value="2">玩</option> </select> {{hobby}} </div>
</body> <script type="text/javascript"> var app = new Vue({ el:'#app', data:{
//这个默认为空 // sex:null, //默认为男 sex:1, hobby:null, } }) </script>


1.4 v-for 循环语句 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。

v-for 可以绑定数据到数组来渲染一个列表:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script
src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body>
<div id="app"> <ul><!--v-for中'a用来接收每一项,in foodList是迭代的目标'{{a输出每一项}}--> <!--<li
v-for="a in foodList">{{a}}</li>--> <li v-for="food in
foodList1">{{food.name}}:¥{{food.discount ? food.price*food.discount :
food.price}}</li> </ul> </div> </body> <script type="text/javascript"> var app
= new Vue({ el:"#app", data:{//迭代字符串的情况比较少, // foodList:['葱','姜','蒜'],
//迭代对象组成的数组比较多 foodList1:[ { name:"葱", price:13, discount:0.5, }, { name:"姜",
price:12, discount:0.5, }, { name:"蒜", price:11, discount:null, }, ], }, });
</script> </html>


1.5 v-bind 样式的绑定(当我们省略了v-bind时没有任何的区别这个是vue上人性化的一个快捷方式,功能上不受影像)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script
src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <style
type="text/css"> .active{ background: palegoldenrod; } </style> <body> <div
id="app"> <!--原始添加一个连接的方式--> <a href="https://www.baidu.com/">点击</a>
<!--当我们用到的连接不是动态时用v-bind添加到url中--> <a v-bind:href="url">点击</a>
<!--我们可以添加一个图片,这样点击图片的时候就可直接跳转--> <a v-bind:href="url"><img v-bind:src="img"
/></a> <!--我们可以给他绑定一个类--> <a v-bind:class="anniu" v-bind:href="url">点击</a>
<!--传入对象:键值对形式添加,键名这里就是active,这个就是你要添加的类,值也就是isActive就是在什么情况下添加这个条件--> <a
v-bind:class="{active:isActive}" v-bind:href="url">点击</a>
<!--//当我们省略了v-bind时没有任何的区别这个是vue上人性化的一个快捷方式,功能上不受影像--> <!--<a
:class="{active:isActive}" :href="url">点击</a>--> </div> </body> <script
type="text/javascript"> var app = new Vue({ //它是 DOM 元素中的 id,可以找到页面的指向
el:"#app", //用于定义属性, data:{ url:"https://www.baidu.com/", img:"img/1.jpg",
//根据上面的v-bind:class="anniu"找到这个位置后,添加class的类名 anniu:"btn btn-default",
//根据上面的class传入对象的值v-bind:class="{active:isActive}"当这个值为真的情况下显示上面 isActive:true,
}, // 用于定义的函数 methods:{ } }); </script> </html>
1.6 v-on 事件处理器(

v-on
:可以替换成@) <head> <meta charset="UTF-8"> <title></title> <script src="js/vue.js"
type="text/javascript" charset="utf-8"></script> </head> <body> <div id="app">
<button v-on:click="onclick">点击</button> </div> </body> <script
type="text/javascript"> var app = new Vue({ el: '#app', methods: { onclick:
function() { console.log("dian"); } } }) </script>
一个元素绑定多个事件

当我们的鼠标进入按钮,滑出按钮时
<body> <div id="app"> <button v-on="{mouseenter:onEnter,mouseout:outEnter}"
v-on:click="onClick()">点我</button> </div> </body> <script
type="text/javascript"> var app = new Vue({ el: '#app', methods: {
onClick:function(){ console.log("你好"); }, onEnter:function(){
console.log("mouseenter"); }, outEnter:function(){ console.log("mouseout"); },
} }) </script>
这个是当我们点击提交的时候,控制台就可以输出submit
<body> <div id="app"> <button v-on="{mouseenter:onEnter,mouseout:outEnter}"
v-on:click="onClick()">点我</button> <form v-on:submit="onSubmit($event)"> <input
type="text" /> <button type="submit">提交</button> </form> </div> </body> <script
type="text/javascript"> var app = new Vue({ el: '#app', methods: {
onClick:function(){ console.log("你好"); }, onEnter:function(){
console.log("mouseenter"); }, outEnter:function(){ console.log("mouseout"); },
onSubmit:function(e){ //阻止点击调转链接,不会整页面的刷新 e.preventDefault();
console.log("submit"); }, } }) </script>


但是当我们这么做的时候还是觉得太麻烦了,这样vue.js为我们封装好了两个


一个是prevent:$event根据下面的e.preventDefault()就不会再整页的刷新了,和上面传入的$event一样,prevent就是阻止点击调转链接

一个是stop:除了prevent,还有stop就是停止冒泡事件的,意思就是到这里就行了,不要往上报了
<body> <div id="app"> <button v-on="{mouseenter:onEnter,mouseout:outEnter}"
v-on:click="onClick()">点我</button>
<!--$event根据下面的e.preventDefault()就不会再整页的刷新了,和上面传入的$event一样,prevent就是阻止点击调转链接-->
<!--除了prevent,还有stop就是停止冒泡事件的,意思就是到这里就行了,不要往上报了--> <form
v-on:submit.prevent="onSubmit"> <!--<form v-on:submit.stop="onSubmit">-->
<input type="text" /> <button type="submit">提交</button> </form> </div> </body>
<script type="text/javascript"> var app = new Vue({ el: '#app', methods: {
onClick:function(){ console.log("你好"); }, onEnter:function(){
console.log("mouseenter"); }, outEnter:function(){ console.log("mouseout"); },
onSubmit:function(){ console.log("submit"); }, } }) </script>
当我们是一个键盘事件的时候
<body> <div id="app"> <button v-on="{mouseenter:onEnter,mouseout:outEnter}"
v-on:click="onClick()">点我</button>
<!--v-on:keyup.enter="onKeyup"当用户敲了回车键的时候控制台就可以输出--> <form
v-on:keyup.enter="onKeyup" v-on:submit.prevent="onSubmit"> <!-- v-on:可以替换成@-->
<!--<form @keyup.enter="onKeyup" @submit.prevent="onSubmit">--> <!--<form
v-on:submit.stop="onSubmit">--> <input type="text" /> <button
type="submit">提交</button> </form> </div> </body> <script type="text/javascript">
var app = new Vue({ el: '#app', methods: { onClick:function(){
console.log("你好"); }, onEnter:function(){ console.log("mouseenter"); },
outEnter:function(){ console.log("mouseout"); }, onSubmit:function(){
console.log("submit"); }, onKeyup:function(){ console.log("onKeyup"); }, } })
</script>



























友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信