Vue基礎入門——概述+語法

Vue

1 概述

1.1 vuejs入門

Vue.js 是一個構建數據驅動的web界面的漸進式框架。目標是通過儘可能簡單的API實現響應的數據綁定和組合的視圖組件。易上手,便於第三方庫或既有項目整合。
官網:https://cn.vuejs.org/v2/guide/

1.2 MVVM模式

Model-View-ViewModel ,本質是MVC的改進版。MVVM就是將其中的View的狀態和行爲抽象化,將視圖UI和業務邏輯分開。
MWVM模式和MVC模式樣,主要目的是分離視圖(View) 和模型(Model)。
Vue.js是一個提供了MVVM風格的雙向數據綁定的JavaScript庫,專注於View層。核心就是VM,也就是ViewModel(負責連接View和Model,保證視圖和數據的一致性,這種輕量級的架構讓前端開發更加高效、快捷)。
在這裏插入圖片描述

1.3 前期準備

maven-----archetype.maven-archetype-webapp
在這裏插入圖片描述
頁面放在webapp下面

1.4 入門案例

在這裏插入圖片描述
配置Tomcat,啓動服務器,訪問http://localhost:8989/vuedemo/demo1.html

2 語法

2.1 插值表達式

數據綁定最常見的形式就是使用"Mustache"語法(雙大括號)的文本插值,Mustache 標籤將會被替代爲對應數據對象上屬性的值。無論何時,綁定的數據對象上屬性發生了改變,插值處的內容都會更新。

Vue.js都提供了完全的JavaScript表達式支持。
{ { number + 1 } }
{ { ok ? 'YES' : 'NO' } }

這些表達式會在所屬Vue實例的數據作用域下作爲JavaScript被解析。有個限制就是,每個綁定都只能包含單個表達式,所以下面的例子都不會生效

{ { var a = 1 } } //這是語句不是表達式
{ { if (ok) { return message  } } }  //流控制也不會生效

實現頁面熱部署:不重啓服務器,刷新
在這裏插入圖片描述
在這裏插入圖片描述

2.2 VueJS常用系統指令

1 v-on

可以用v-on指令監聽DOM事件,並在觸發時運行一些JavaScript事件。

  1. v-on:click——綁定點擊事件
    在這裏插入圖片描述
    報紅:alt+enter
    在這裏插入圖片描述

  2. v-on:keydown——鍵盤按下事件
    傳統的js事件

<body>
    <div id="app">
 		Vue:<input type="text" v-on:keydown="fun($event)">
        <hr/>
        傳統JS:<input type="text" onkeydown="showKeyCode()"/>
     </div>
</body>
<script>
    // 傳統js的鍵盤按下事件
    function showKeyCode() {
        //event對象和我們的document對象以及window對象是一樣的,可以不用定義直接使用
        var keyCode = event.keyCode;
        //alert(keyCode);
        if(event.keyCode == 13){
            alert("你按的是回車鍵")
        }
//      if (keyCode < 48 || keyCode > 57){
          // 不讓鍵盤的按鍵起作用
//        event.preventDefault();
//      }
	
	new Vue({
        el:"#app",
        methods:{
        //    $event它是vue中的事件對象,和傳統js的event對象是一樣的
            fun:function (event) {
                var keyCode = event.keyCode;
                if (keyCode < 48 || keyCode > 57){
                    // 不讓鍵盤的按鍵起作用
                    event.preventDefault();
                }
            }
        }
    });
    }
</script>

keyCode數值
event.preventDefault()——阻止事件默認行爲

  1. v-on:mouseover——鼠標懸浮事件
    傳統的js方式
    <div id="app">
        <div onmouseover="divmouseover()" id="div">
            <textarea onmouseover="textareamouseover()">這是另一個文件域</textarea>
        </div>
    </div>
    ......
    function divmouseover() {
        alert("鼠標移動到div上");
    }
    function textareamouseover() {
        alert("鼠標移動到textarea上了");
        event.stopPropagation();//鼠標停在文件域上不會彈出“鼠標移動到div上”
    }

@事件名稱:@mouseover是v-on:mouseover的簡寫

<div v-on:mouseover="fun1" id="div">
	<textarea v-on:mouseover="fun2($event)">這是一個文件域</textarea>
</div>
......
new Vue({
        el:"#app",
        methods:{
            fun1:function () {
                alert("鼠標停留在div上");
            },
            fun2:function (event) {
                alert("鼠標停留在textarea上");
                event.stopPropagation();
            }
        }
    });

event.stopPropagation()——阻止事件傳播

2 事件/按鍵修飾符

事件修飾符

<body>
    <div id="app">
        <form action="demo1.html" method="post" onsubmit="return checkForm()">
            <input type="submit" value="提交">
        </form>
    </div>
</body>
<script>
    // 傳統的js
    function checkForm() {
        alert(1);
        // 表單驗證必須有一個明確的boolean類型返回值
        // 在應用驗證方法時必須加上一個 return 方法名稱
        return false;
    }
</script>

@submit.prevent,@mouseover.stop的使用

<div id="app">
        <form @submit.prevent action="demo1.html" method="post">
            <input type="submit" value="提交">
        </form>
        <hr/>
        <div @mouseover="fun1" id="div">
            <textarea @mouseover.stop="fun2($event)">這是一個文件域</textarea>
        </div>
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        methods:{
            fun1:function () {
                alert("鼠標停留在div上");
            },
            fun2:function (event) {
                alert("鼠標停留在textarea上");
            }
        }
    });
</script>

按鍵修飾符

<body>
    <div id="app">
    	Vue:<input type="text" v-on:keydown,enter="fun1">
    </div>
</body>
<script>
    new Vue({
       el:"#app",
       methods:{
       		fun1:function(){
       			alert("按下的是回車");
       		}
       }
    });
</script>

v-on:keydown=@keydown觸發按下回車鍵的事件
在這裏插入圖片描述

3 v-text,v-html,v-bind
<body>
    <div id="app">
<!--        <div id="div1"></div>-->
<!--        <div id="div2"></div>-->
        <div v-text="message"></div>
        <div v-html="message"></div>
    </div>
</body>
<script>
    new Vue({
       el:"#app",
       data:{
           message:"<h1>hello Vue</h1>"
       }
    });
    // 傳統js的innerText和innerHTML
    window.onload = function () {
        document.getElementById("div1").innerHTML="<h1>hello</h1>";
        document.getElementById("div2").innerText="<h2>hello</h2>";
    }
    
    new Vue({
        el:"#app",
        methods:{
            fun1:function () {
                alert("鼠標停留在div上");
            },
            fun2:function (event) {
                alert("鼠標停留在textarea上");
            }
        }
    });
</script>

在這裏插入圖片描述
v-bind
寫在文本內的,給標籤的屬性賦值
在這裏插入圖片描述
在這裏插入圖片描述

4 v-for

v-for遍歷數組
在這裏插入圖片描述
在這裏插入圖片描述
v-for遍歷對象
在這裏插入圖片描述
在這裏插入圖片描述

5 v-model

在這裏插入圖片描述
在這裏插入圖片描述
v-if與v-show
在這裏插入圖片描述

3 生命週期

8個生命週期的執行點,4個基本的,4個特殊的。

4 axios的ajax異步請求

Axios是一個基於promise的HTTP庫,可以用在瀏覽器和node.js中
在這裏插入圖片描述

5 綜合案例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章