天天看點

vue.js入門開發

vue.js入門開發

vue {{}} 雙向資料綁定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- {{}} 用于标簽内顯示資料 -->
        Hello , {{msg}}  <br>  
        <!-- v-model 進行資料雙向綁定 -->
        <input type="text"  v-model="msg">
    </div>

    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>
        new Vue({
            el:'#app',  // 指定被vue管理的入口,值為選擇器,不可以指定body或者html
            data:{  // 初始化資料,在vue執行個體管理的Dom節點下,可以通過模闆請求來引用
                msg: '你好啊,王佳偉同學,你最棒!' 
            }
        })
    </script>
</body>
</html>      
vue.js入門開發

MVVC 模型

MVVC模型是 Model-View-ViewModel 的縮寫,是一種軟體架構風格。

他的哲學思想上:

  • 通過資料驅動視圖:把需要改變的視圖資料初始化到Vue中,然後再通過修改Vue中的資料,進而實作對視圖的修改更新。
  • 聲明式程式設計:按照vue的特定文法聲明開發就可以實作相應功能,不需要直接操作Dom元素。
  • 指令式程式設計:需要擷取Dom元素。jquery就是需要手動操作才能實作功能。

Model - 代表模型,就是資料對象,data

View - 代表視圖,就是模闆頁面

ViewModel - 視圖模型,本質上就是Vue執行個體

vue.js入門開發

原理哈! view 的值被更改了之後,DOM Listeners 監聽到輸入框的值發生改變之後,會将 Model 中的資料進行更新。更新了之後,在通過 Data Bindings 資料綁定,将更新的Model中的資料渲染到 View 頁面。

上面的過程不需要我們開發者手動去進行操作,Vue已經幫我們完成了。我們隻需要在頁面上遵守Vue 的文法規則就可以自動幫我們實作以上功能。

Vue Devtools 插件

Vue Devtools 插件可以讓我們在一個更友好的界面中審查和調試Vue項目。

推薦在浏覽器上安裝 Vue Devtools。

模闆資料綁定渲染

可生成動态的 HTML 頁面,頁面中使用嵌入 Vue.js 文法動态生成。

  • {{ xxxx }} 雙大括号文本綁定
  • v-xxx 以 v- 開頭的用于标簽屬性綁定,成為指令
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        {{JS表達式}}  
    -->
    <div id="app">
        <h3>1. {{}}雙大括号輸出文本内容</h3>
        <!-- 直接擷取文本内容 -->
        <p>{{ msg }}</p>
        <!-- 直接執行JS表達式 -->
        <p>{{ sorce + 1 }}</p>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el:'#app',  
            data:{  
                msg: '王佳偉,你最棒!' ,
                sorce: 100,
            }
        })
    </script>
</body>
</html>      

v-once一次性插值

通過 v-once 指令,隻執行一次性的插值,當資料改變的時候,插值處的資料不會被更新。

<h3>一次性插值 v-once</h3>
<p v-once>{{msg}}</p>      

使用 v-once 修飾之後,當 msg 資料發生變化時,Dom元素上的資料也不會在更新。如果以後有相應的需求可以使用這個标簽,但是使用的比較少,基本上不會使用,但是以防萬一,遇到類似的需求知道有這個東西。

vue.js入門開發

輸出HTML指令 v-html

允許直接渲染标簽,而不是以文本的方式渲染。

  1. 如果想要輸出HTML資料,雙大括号将資料以普通文本的方式輸出,為了輸出真正的HTML效果,需要使用 v-html 指定。
<p>v-html的形式:<span v-html="contentHtml"></span></p>      
  1. 為了防止 XSS 攻擊。在此指令上做了安全處理,如果發現輸出内容上有script标簽的時候,則不渲染。XSS攻擊主要是利用了JS腳本注入到網頁,讀取cookie,讀取到了之後發送到黑客的伺服器,進而讓黑客可以使用你的賬号資訊做非法操作,還可以進入你的支付,跳轉到釣魚網站。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        {{JS表達式}}  
    -->
    <div id="app">
        <h3>1. {{}}雙大括号輸出文本内容</h3>
        <!-- 直接擷取文本内容 -->
        <p>{{ msg }}</p>
        <!-- 直接執行JS表達式 -->
        <p>{{ sorce + 1 }}</p>
        <h3>一次性插值 v-once</h3>
        <p v-once>{{msg}}</p>
        <h3>指令輸出真正的HTML内容 v-html</h3>
        <p>雙大括号的形式:{{contentHtml}}</p>
        <p>v-html的形式:<span v-html="contentHtml"></span></p>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el:'#app',  
            data:{  
                msg: '王佳偉,你最棒!' ,
                sorce: 100,
                contentHtml:`<span style="color:red">王佳偉,你最棒!
                    <script>alert("我是大傻逼!")<\/script>
                    </span>`
            }
        })
    </script>
</body>
</html>      
vue.js入門開發

元素綁定指令 v-bind

完整格式:

v-bind:元素的屬性名='xxxx'      

縮寫格式:

:元素屬性名 = 'xxx'      

作用:将資料動态綁定到指定元素屬性上面。

事件綁定指令 v-on

完整格式:

v-on:事件名稱="事件處理函數名"      

縮寫格式:

@事件名稱 = "事件處理函數名"   注意:@後面沒有冒号      

作用:用于監聽DOM事件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        {{JS表達式}}  
    -->
    <div id="app">
        <h3>1. {{}}雙大括号輸出文本内容</h3>
        <!-- 直接擷取文本内容 -->
        <p>{{ msg }}</p>
        <!-- 直接執行JS表達式 -->
        <p>{{ sorce + 1 }}</p>
        <h3>一次性插值 v-once</h3>
        <p v-once>{{msg}}</p>
        <h3>指令輸出真正的HTML内容 v-html</h3>
        <p>雙大括号的形式:{{contentHtml}}</p>
        <p>v-html的形式:<span v-html="contentHtml"></span></p>
        <h3>元素綁定指令 v-bind</h3>
        <!-- 完整 -->
        <img v-bind:src="imgUrl">  
        <!-- 簡化 -->
        <img :src="imgUrl">
        <h3>事件綁定指令 v-on</h3>
        <input type="text" value="1" v-model="num">
        <!-- 完整 -->
        <button v-on:click="add">完整點選 +1</button>
        <!-- 簡化 -->
        <button @click="add">簡化點選 +1</button>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el:'#app',  
            data:{  
                msg: '王佳偉,你最棒!' ,
                sorce: 100,
                contentHtml:`<span style="color:red">王佳偉,你最棒!
                    <script>alert("我是大傻逼!")<\/script>
                    </span>`,
                imgUrl:'https://profile.csdnimg.cn/B/9/A/3_weixin_42776111',
                num : 1
            },
            methods:{
                add:function(){
                    this.num ++
                }
            }
        })
    </script>
</body>
</html>      
vue.js入門開發

源碼位置:​​https://gitee.com/wjw1014/vue_learning_course​​

【版權聲明】本博文著作權歸作者所有,任何形式的轉載都請聯系作者擷取授權并注明出處!

【重要說明】本文為本人的學習記錄,論點和觀點僅代表個人而不代表當時技術的真理,目的是自我學習和有幸成為可以向他人分享的經驗,是以有錯誤會虛心接受改正,但不代表此刻博文無誤!