A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dairuiqi 初级黑马   /  2019-7-11 17:53  /  1050 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Vue.js是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑 定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
官网:https://cn.vuejs.org/ 1.2 MVVM模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为 抽象化,让我们将视图 UI 和业务逻辑分开 MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model)
Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。它的核心是 MVVM 中的 VM, 也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端 开发更加高效、便捷
1.3 VueJS 快速入门
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />
        <title>快速入门</title>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
1.4 插值表达式
数据绑定常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值,Mustache 标签将会被替代为对应数据对 象上属性的值。无论何时,绑定的数据对象上属性发生了改变,插值处的内容都会更新。
Vue.js 都提供了完全的 JavaScript 表达式支持。

这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个限制就是,每个绑定都只能包含单个 表达式,所以下面的例子都不会生效。

2.VueJS 常用系统指令
2.1 v-on
可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码 2.1.1 v-on:click

        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            {{message}}        </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                data:{                    message:'hello world' //注意不要写分号结尾                }            });        </script>    </body> </html>
{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}
<!-- 这是语句,不是表达式 --> {{ var a = 1 }} <!-- 流控制也不会生效,请使用三元表达式 --> {{ if (ok) { return message } }}
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />
        <title>事件处理 v-on示例1</title>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.1.2 v-on:keydown

        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            {{message}}            <button v-on:click="fun1('good')">点击改变</button>        </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                data:{                    message:'hello world' //注意不要写分号结尾                },                methods:{                    fun1:function(msg){                        this.message=msg;                    }                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>事件处理 v-on示例2</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            <input type="text"v-on:keydown="fun2('good',$event)">        </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                methods:{                    fun2:function(msg,event){                                            if(! ((event.keyCode>=48&&event.keyCode<=57)||event.keyCode==8||event.keyCode==46)){                                               event.preventDefault();                        }                    }                }            });        </script>    </body>
</html>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.1.3 v-on:mouseover

2.1.4 事件修饰符
Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。 Vue.js通过由点(.)表示的指令后缀来调用修饰符。
.stop .prevent .capture .self .once


<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>事件处理 v-on示例3</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            <div v-on:mouseover="fun1" id="div">                <textarea v-on:mouseover="fun2($event)">这是一个文件域</textarea>            </div>        </div>                <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              methods:{                    fun1:function(){                        alert("div");                    },                    fun2:function(event){                                           alert("textarea");                        event.stopPropagation();//阻止冒泡                    }                }            });        </script>    </body> </html>

<!DOCTYPE html>
<html>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.1.5 按键修饰符
Vue 允许为 v-on 在监听键盘事件时添加按键修饰符
全部的按键别名:
.enter .tab .delete (捕获 "删除" 和 "退格" 键) .esc .space .up .down .left .right .ctrl .alt .shift .meta

    <head>        <meta charset="utf-8" />        <title>v-on 事件修饰符</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <form @submit.prevent action="http://www.itcast.cn" method="get">                <input type="submit" value="提交"/>            </form>                         <div @click="fun1">                <a @click.stop >itcast</a>            </div>        </div>                <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              methods:{                    fun1:function(){                        alert("hello itcast");                    }                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090


v-on简写方式

2.2 v-text与v-html

        <meta charset="utf-8" />        <title>v-on 按钮修饰符</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <input type="text" v-on:keyup.enter="fun1">        </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              methods:{                    fun1:function(){                        alert("你按了回车");                    }                }            });        </script>    </body> </html>

<p><!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="doSomething">Do something</div>
<!-- 完整语法 --> <a v-on:click="doSomething">...</a> <!-- 缩写 --> <a @click="doSomething">...</a>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-html与v-text</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            <div v-text="message"></div>            <div v-html="message"></div>        </div>              <script>            new Vue({
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.3 v-bind
插值语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind指令

v-bind简写方式

2.4 v-model
                el:'#app', //表示当前vue对象接管了div区域                              data:{                    message:"<h1>传智黑马</h1>"                }            });        </script>    </body> </html>

<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-bind</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">            <font size="5" v-bind:color="ys1">传智播客</font>            <font size="5" :color="ys2">黑马程序员</font>             <hr>            <a v-bind={href:"http://www.itcast.cn/index/"+id}>itcast</a>                    </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              data:{                    ys1:"red",                    ys2:"green",                    id:1                }            });        </script>    </body> </html>

<!-- 完整语法 --> <a v-bind:href="url">...</a> <!-- 缩写 --> <a :href="url">...</a>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090


2.5 v-for
操作array

<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-model</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                  姓名:<input type="text" id="username" v-model="user.username"><br>            密码:<input type="password" id="password" v-model="user.password"><br>            <input type="button" @click="fun" value="获取">                   </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              data:{                    user:{username:"",password:""}                },                methods:{                    fun:function(){                        alert(this.user.username+"   "+this.user.password);                        this.user.username="tom";                        this.user.password="11111111";                    }                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-model</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <ul>                <li v-for="(item,index) in list">{{item+"  "+index}}</li>            </ul>                   </div>              <script>            new Vue({
                el:'#app', //表示当前vue对象接管了div区域              
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
操作对象

操作对象数组

                data:{                    list:[1,2,3,4,5,6]                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-for示例1</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <ul>                <li v-for="(value,key) in product">{{key}}--{{value}}</li>            </ul>                   </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              data:{                    product:{id:1,pname:"电视机",price:6000}                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-for示例1</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <table border="1">                <tr>                    <td>序号</td>                                     <td>名称</td>                                     <td>价格</td>
                </tr>
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.6 v-if与v-show
v-if是根据表达式的值来决定是否渲染元素
v-show是根据表达式的值来切换元素的display css属性

                <tr v-for="p in products">                     <td>                        {{p.id}}                    </td>                    <td>                        {{p.pname}}                    </td>                    <td>                        {{p.price}}                    </td>                </tr>            </table>                    </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              data:{                    products:[{id:1,pname:"电视机",price:6000},{id:2,pname:"电冰箱",price:8000}, {id:3,pname:"电风扇",price:600}]                }            });        </script>    </body> </html>
<!DOCTYPE html> <html>    <head>        <meta charset="utf-8" />        <title>v-if与v-show</title>        <script src="js/vuejs-2.5.16.js"></script>    </head>    <body>        <div id="app">                      <span v-if="flag">传智播客</span>            <span v-show="flag">itcast</span>            <button @click="toggle">切换</button>        </div>              <script>            new Vue({                el:'#app', //表示当前vue对象接管了div区域                              data:{                    flag:false                },                methods:{
                    toggle:function(){
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
3.VueJS生命周期
每个 Vue 实例在被创建之前都要经过一系列的初始化过程.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马