1. 程式人生 > >Vue 初學指南 二

Vue 初學指南 二

記錄繼續vue的學習

 

Mustache

<span v-bind:title="msg">
   {{ message }}
</span>

資料繫結“Mustache”語法 (雙大括號{{xxx}}) 的文字插值,就瞭解一下他的名字Mustache

 

<span v-bind:title="msg" v-once>
   {{ message }}
</span>

如果在span上加了v-once屬性,那麼Mustache的插值只能被執行一次,包括該節點上的其他Mustache,如果span節點裡面還巢狀著其他的節點,也是隻能被執行一次

Mustache中可以出現javasricprt的表示式,例如: {{num+1}},{{a==1?b:c}},{{str.split(',').reverse().join(',')}}<=這好像是js的函式,反正這些都是支援的,不可以在Mustache中訪問定義的全域性變數,可以訪問全域性變數的一個白名單(這句還不懂:mark,回補)

 

v-html 對html輸入真正的html,但是很不安全,瞭解即可

 

v-bind v-on

Mustache語法不能作用在HTML特性上,指南是這麼說,但覺得有點瑕疵,個人更習慣的叫他標籤的屬性,比如<div xxx="">中的xxx

使用v-bind,v-on等指令來控制,v-bind 縮寫成 :XXX ,v-on 縮寫成 @XXX ,這兩個指令是最頻繁使用的,所以特例設定了簡寫

比如 v-bind : href --> :href    ,    v-on : click --> @click

 

計算屬性

還是圍繞著Mustache,說是如果把表示式都寫在Mustache中,會造成一長串,不容易維護,然後設計了一個計算屬性 computed,用來計算複雜的邏輯,得到一個結果,然後再Mustache插值

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 第一步 引入環境 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <!-- 第二步 建立一個div -->
    <div id="app">
        <span v-bind:title="msg" v-once>
            {{ message }}
            <p>
                {{getMsg}}
            </p>
        </span>
       
    </div>
</body>
<!-- 第三步 Dom資料渲染 -->
<script>
    var app=new Vue({
        el: '#app',
        data: {
            message: 'data-message',
        },
        methods:{
            getMessage(){
                return this.message+"hi"
            }
        },
        computed:{
            getMsg(){
                return this.message+"hello"
            }
        }
    })
</script>
</html>

會發現使用methods和computed的時候,可以獲取同樣的效果,那麼他們的區別是什麼,瞭解到計算屬性是基於他們的依賴進行快取,不是很明白,但是快取就是為了方便,速度,後面知道,剛才計算的getMsg(),依賴於message屬性,只要該屬性不發生變化,他的值就會被快取,每次就可以不執行getMsg,直接快取取值即可,methods裡面的函式,每次渲染都會重新執行一次,對比之下就可以知道適當的不同環境使用不同的屬性

 

偵聽屬性指南中有說到 watch ,然而我並不知道是什麼,感覺像是監聽回撥檢查一類的屬性,用計算屬性方式來代替重複性的偵聽屬性

對於getter和setter的屬性,作為後端的人來說還是很熟悉的,先學到這裡,明天繼續,下班了..~

---------------------------------------------------------------------------------------