1. 程式人生 > >1、Vue

1、Vue

一、起步

原理:

Vue.js資料驅動的原理在於View層的檢視發生改變時,Vue會通過DOM Listeners來監聽並改變Model層的資料。
反之,當Model層的資料發生改變時,也會通過Data Bingings來監聽並改變View層的展示。從而實現雙向資料繫結的功能。 例如:jQuery通過操作DOM來改變頁面的顯示,而Vue通過操作資料來實現頁面的更新與展示。
這樣我們就能很直觀的理解資料驅動的意思了。
MVVM 是Model-View-ViewModel 的縮寫,它是一種基於前端開發的架構模式,
其核心是提供對View 和 ViewModel 的雙向資料繫結,這使得ViewModel 的狀態改變可以自動傳遞給 View,即所謂的資料雙向繫結。 Vue.js 就是一個提供了 MVVM 風格的雙向資料繫結的 Javascript 庫,專注於View 層。它的核心是 MVVM 中的 VM,
也就是 ViewModel。 ViewModel負責連線 View 和 Model,保證檢視和資料的一致性。

宣告式渲染

<div id="start">
    {{message}}
</div>

var start = new Vue({
        el: "#start",
        data: {
            message: "helloWorld,helloVue!"
        }
    })

  • el:Vue需要操作的元素節點
  • data屬性:每個 Vue 例項都會代理其 data物件裡所有的屬性。注意只有這些被代理的屬性是響應的。如果在例項建立之後新增新的屬性到例項上,它不會觸發檢視更新。
 

常用指令介紹

v-cloak:還沒有載入完vue.js會出現閃爍問題,這個可以解決

v-text:會覆蓋元素中的文字內容

v-html:html 會覆蓋元素中的文字內容

v-bind:繫結屬性可以簡寫為   :屬性名

v-on: 繫結事件 可以簡寫為   @事件名

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        [v
-cloak] { color:red; } </style> </head> <body> <div id="app"> <!-- 使用 v-cloak 能夠解決 插值表示式閃爍的問題 --> <p v-cloak>{{msg}}</p> <h4 v-text="msg"></h4> <!-- 預設 v-text 是沒有閃爍問題的 --> <!-- v-text 會覆蓋元素中原本的內容, 但是插值表示式 只會替換自己的這個佔位符, 不會把整個元素的內容清空 --> <div>{{msg2}}</div> <div v-text="msg2"></div> <div v-html="msg2">12345</div> <!-- v-bind: 是Vue中用於繫結屬性的指令 --> <!-- <input type="button" value="按鈕" v-bind:title="mytitle"> --> <!-- 注意: v-bind: 指令可以簡寫為 :要繫結的屬性 --> <!-- v-bind 中,可以寫合法的JS表示式 --> <input type="button" value="按鈕" v-bind:title="mytitle + '1233' "> <!-- Vue 中提供了 v-on: 事件繫結機制 --> <input type="button" value="按鈕" v-on:click="show"> </div> <!-- 1.匯入Vue的包 --> <script src="./lib/vue.js"></script> <script> var vm =new Vue({ el:"#app", data:{ msg:"123", msg2: "<h1>我是一個大大的h1, 我大,我驕傲</h1>", mytitle: "這是一個自定義的title", }, methods:{ //這個 methods 屬性中定義了當前Vue例項所有可用的方法 show: function(){ alert("hello") } } }) </script> </body> </html>

未完待續