初始Vue
什么是Vue?Vue是一个渐进式的JavaScript框架,它与Angular.js、React.js并称为前端三大主流框架 MVVM与MVCMVC是后端的分层开发模式(Model-View-Conreoller) 入门案例<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Hello Vue</title> </head> <body> <!-- Vue实例的控制区域,即V(View) --> <div id="app"> <!--v-model指令:双向绑定,同步输入框和span标签内的数据 --> <input type="text" v-model="message" /> <span>{{message}}</span> </div> <!-- 引入vue.js --> <script src="js/vue.js"></script> <script> // 创建vue实例,这就是一个VM调度者 new Vue({ el: "#app",// element,指定vue实例控制的节点区域 // 控制节点所需要的数据,即M(Model) data: { message: "hello Vue" } }) </script> </body> </html> 说明: 常用指令Vue指令 (Directives) 是带有 v- 前缀的特殊特性。指令引用的值预期是单个 JavaScript 表达式(v-for例外) v-cloak在入门案例中,我们看到可以用{{}}表达式灵活地插入数据,但是存在一个问题,当网速较慢时浏览器不会马上将{{}} <style type="text/css"> [v-cloak]{ display: none; } </style> <p v-cloak>{{msg}}</p> v-text为解决上一问题,vue还提供了一个指令v-text替代{{}}表达式,不同的一点是v-text会覆盖元素内所有内容。 <div id="app"> <p>==={{msg}}===</p> <p v-text="msg">======</p> </div> v-once一次性地插值指令,在标签中使用了这个指令,若使用了{{}}表达式插入数据,则当{{}}中表达式的数据改变时,页面显示的数据不会更新。 v-html在上面,我们了解了 <div id="app"> <p>{{msg}}</p> <p v-html="msg"></p> </div> v-bind与v-modelv-bind是单向数据绑定,v-model是双向数据绑定且一方只能是输入框 这一点在入门案例中已经体现得很清楚了。 由于无法将Vue实例中的data的变量直接放进html元素的各属性中,比如 <img src="imgUrl" alt="msg"/> 这样绑定的结果是图片的路径就是"imgUrl",因此图片找不到路径。 这样的事便由v-bind来解决,它还能绑定元素的各种属性,如src、herf、class、value等。另外v-bind:还有一个简易写法::。 <div id="app"> <img v-bind:src="imgUrl" v-bind:alt="msg"/> <img :src="imgUrl" v-bind:alt="msg"/> </div> <!-- js代码 --> <script src="js/vue.js"></script> <script> new Vue({ el:"#app",data:{ imgUrl:"https://cn.vuejs.org/images/logo.png",msg:"Vue logo" } }) </script> v-on它用于监听 DOM 事件,用来绑定触发事件。与v-bind一样,它也有一个简写:@。 <div id="app"> <button v-on:click="test">点击我</button> <button @click="test">点击我</button> </div> <!-- js代码 --> <script src="js/vue.js"></script> <script> var vm = new Vue({ el:"#app",methods:{ test(){ alert("hello Vue"); } } }) </script> 与el、data一样method是Vue实例的配置属性,用来存放事件方法。 如果事件方法需要参数,则在绑定时加上()传入参数。 v-if与v-showVue提供两个控制元素的显示与切换的指令v-if和v-show。 区别:v-if是真正意义上的隐藏元素,但是每次需要重新删除和创建元素,具有较高的切换性能消耗;v-show不会重建进行DOM的删除和创建操作,只是修改样式display:none。 另外对于v-if,Vue还提供了v-else-if和v-else搭配,但元素必须紧密连接,否则指令不被识别。 案例: <div id="app"> <span v-if="num<=100&&num>=85">优秀{{num}}</span> <span v-else-if="num>=70&&num<85">良好{{num}}</span> <span v-else-if="num>=60&&num<70">及格{{num}}</span> <span v-else-if="num>=0&&num<=60">不及格{{num}}</span> <span v-else>不在范围内</span> <p v-show="isShow">v-show控制的元素</p> </div> <script src="../js/vue.js"></script> <script> var vm = new Vue({ el: "#app",data: { num: 95,isShow: true } }) </script> v-forVue为渲染集合、数组提供了v-for指令,用法:v-for="item in/of items",其中items是源数据数组,而item则是被迭代的数组元素的别名。 遍历数组列表时,还可以获取到被迭代的数组元素下标。 <ul> <!--index为迭代元素的下标--> <li v-for="(item,index) in items"> {{index}}-{{item.msg}} </li> </ul> data:{ items:[ {msg:"a"},{msg:"b"},{msg:"c"} ],} v-for还可以遍历对象内的属性 <div id="app"> <ul> <!--遍历对象属性同样可以获取元素下标甚至可以获取到属性名--> <li v-for="(value,key,index) in object"> {{index}}-{{key}}-{{value}} </li> </ul> </div> <script src="../js/vue.js"></script> <script> new Vue({ el:"#app",data:{ object:{ name:"张三",age:"18" } } }) </script> ? 如果文章有错的地方欢迎指正,大家互相交流。感谢关注公众号JsjCoding (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |