[js高手之路] vue系列教程 - vue的基本用法與常見指令(1)

来源:http://www.cnblogs.com/ghostwu/archive/2017/08/14/7359055.html
-Advertisement-
Play Games

本系列課程選用vue的版本為1.0.21, 什麼是vue? vue是由尤雨溪開發的一款基於MVVM的框架,M->模型,V->視圖, 也就是說模型數據改變了,視圖也跟著改變, 視圖內容改變,模型內容也跟著改變, 業界稱之為雙向綁定,或者說雙向數據驅動,基於此特點,學習這個框架,跟jquery完全不同, ...


本系列課程選用vue的版本為1.0.21,

什麼是vue?

vue是由尤雨溪開發的一款基於MVVM的框架,M->模型,V->視圖, 也就是說模型數據改變了,視圖也跟著改變, 視圖內容改變,模型內容也跟著改變, 業界稱之為雙向綁定,或者說雙向數據驅動,基於此特點,學習這個框架,跟jquery完全不同, 不要用DOM的思想來學習vue, 在vue裡面幾乎不需要用到DOM操作,一切都是基於數據驅動.

如何使用vue?

現在vue已經發佈了2版本,為什麼學1版本,如果想要深入的學習vue,瞭解和掌握個版本的異同是很有必要的。要想使用vue,首先必須引入vue,在客戶端(瀏覽器)可以通過script標簽引入,如果是服務端,通過import引入

一個基本的vue程式有哪些部分組成?

就像初學者學習jquery一樣,一個基本的jquery程式, 有 domReady, 選擇器,this綁定,事件綁定,屬性和樣式修改組成的,而vue的基本結構如下:

window.onload = function () {
            var c = new Vue({
                el: '#box', //相當於選擇器
                data: {
                    content: 'ghostwu tell you how to learn vue',
                    msg : 'vue中的數據1',
                    msg2 : 'vue中的數據2'
                }
            });
}

這段簡單的代碼,可以實現最基本的數據讀取和顯示功能.  

1,使用vue,先要實例化一個vue

2,構造函數中,傳入字面量對象, data後面也是一個字面量對象,裡面的數據可以自定義,按照json的格式

3,el: 表示要把data中的數據顯示在 el 後面跟的元素下麵, 比如上面的例子, 就是把data中, content, msg, msg2的數據顯示在id 為 box的元素下麵

具體怎麼讀取呢?

1 <div id="box">
2     {{content}}
3     <br>
4     {{msg}}
5     <br>
6     {{msg2}}
7 </div>

{{data中定義的鍵}}, 如{{content}} 讀取的就是vue實例 data裡面的 content定義的值,所以{{content}}輸出 ghostwu tell you how to learn vue, 同理{{msg}}輸出vue中的數據1 ,

{{msg2}}輸出 vue中的數據2

如果我們需要讓數據顯示在不同的元素下麵,可以定義多個vue實例

 1         window.onload = function () {
 2             var c = new Vue({
 3                 el: '#box', //相當於選擇器
 4                 data: {
 5                     content: 'ghostwu tell you how to learn vue',
 6                     msg : 'vue中的數據1',
 7                     msg2 : 'vue中的數據2'
 8                 }
 9             });
10            var c2 = new Vue({
11                el: '#box2',
12                data: {
13                    msg: 'this is a paragraphy'
14                }
15            });
16            var c3 = new Vue({
17                el: '#box3',
18                data: {
19                    msg2: 'this is box3'
20                }
21            });
22         }
1 <p id="box2">{{msg}}</p>
2 <div id="box">
3     {{content}}
4     <br>
5     {{msg}}
6     <br>
7     {{msg2}}
8 </div>
9  <div id="box3">{{msg2}}</div> 

指令:v-model  作用:實現數據的雙向驅動

        window.onload = function () {
            var c = new Vue({
                el: "body",
                data: {
                    msg: 'welcome to study vue!!!'
                }
            });
        }
 1     <input type="text" v-model="msg" id="txt" />
 2     <input type="text" v-model="msg" id="txt2"/>
 3     <br/>
 4     {{msg}}
 5     <div class="box">
 6         {{msg}}
 7     </div>
 8     <div class="box">
 9         {{msg}}
10     </div>
11     <div class="box">
12         {{msg}}
13     </div>
14     <div class="box">
15         {{msg}}
16     </div>

上例,如果修改data中msg的值,那麼輸入框中v-model綁定的msg, 以及4個div中輸出的msg的值 都會隨著data中msg的值的變化而變化,這個就叫做M->V,模型M(data中的數據),

視圖V(html代碼).  模型改變,視圖V也跟著改變, 同樣的上面兩個input輸入框中的值任何一個改變了,data中的msg也會改變,4個div中的msg也跟著改變,這個就叫做V->M,視圖改變,模型數據也跟著改變.

data中可以定義哪些數據?

常見的字元串,整形數字,數組,布爾,對象類型都可以

 1          window.onload = function () {
 2             var c = new Vue({
 3                 el: 'body',
 4                 data: {
 5                     msg: 'this is a msg',
 6                     msg2 : 'hello world!',
 7                     arr : [ 100, 200, 300 ],
 8                     flag : true,
 9                     json : {
10                         key1 : '八戒',
11                         key2 : '悟空',
12                         key3 : '沙僧'
13                     },
14                     num : 100,
15                 }
16             });
17         }
1     {{msg}} <br/>
2     {{msg2}} <br/>
3     {{arr}} <br/>
4     {{flag}} <br/>
5     {{json}}<br/>
6     {{num}}<br/>

輸出結果:

this is a msg 
hello world! 
100,200,300 
true 
[object Object]
100

對於json數據,預設情況輸出的是object Object,實際使用中,我們肯定是不希望輸出這玩意, 所以,vue中提供了一個指令v-for

指令:v-for. 作用:迴圈數組與對象

 1     window.onload = function () {
 2             var c = new Vue({
 3                 el: '#box',
 4                 data: {
 5                     persons: {
 6                         name1: '八戒',
 7                         name2: '沙增',
 8                         name3: '悟空'
 9                     }
10                 }
11             });
12         }
1 <div id="box">
2     <ul>
3         <li v-for="value in persons">{{value}}</li>
4     </ul>
5     <ul>
6         <li v-for="a in persons">{{a}}</li>
7     </ul>
8 </div>

輸出結果:

  • 八戒
  • 沙增
  • 悟空
  • 八戒
  • 沙增
  • 悟空

v-for指令中, in前面的變數,就是當前需要輸出persons的每一項的值,他的名稱可以自定義.

v-for也可以迴圈數組

1         window.onload = function () {
2             var c = new Vue({
3                 el : '#box',
4                 data : {
5                     arr : [ '張三', 100, '李四', 200 ]
6                 }
7             });
8         }
1 <ul id="box">
2     <li v-for="value in arr">{{value}}</li>
3 </ul>

輸出結果:

  • 張三
  • 100
  • 李四
  • 200

如果需要獲取當前數組項的索引,可以用{{$index}}

1 <ul id="box">
2     <li v-for="value in arr">{{value}}----{{$index}}</li>
3 </ul>

輸出結果:

  • 張三----0
  • 100----1
  • 李四----2
  • 200----3

v-for還有另外幾種形式,輸出數組:

 1         window.onload = function () {
 2             var c = new Vue({
 3                 el : '#box',
 4                 data : {
 5                     persons : {
 6                         name1 : "八戒",
 7                         name2 : "悟空",
 8                         name3 : "唐僧"
 9                     }
10                 }
11             });
12         }
1 <ul id="box">
2     <li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
3     <hr/>
4     <li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
5     <hr/>
6     <li v-for="(k,v) in persons">{{k}}----{{v}}---{{$index}}---{{$key}}</li>
7 </ul>

輸出結果:

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

  • name1----八戒---0---name1
  • name2----悟空---1---name2
  • name3----唐僧---2---name3

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學rn得朋友們,你們知道rn開源項目嗎?來吧看這裡:http://www.marno.cn/(rn開源項目) React Native學習之路(9) - 註冊登錄驗證的實現 + (用Fetch實現post請求) + (倒計時驗證碼)+(父子組件通信)+(asyncStorage非同步存儲) +(Tex ...
  • 一、JavaScript介紹 前端三劍客之JavaScript,簡稱js,可能是這三個裡面最難的一個了。很早以前,市面上流通著三種js版本,為了統一,ECMA(歐洲電腦製造協會)定義了規範的版本,即EcmaScript。 事實上ECMAScript只是JavaScript的一部分,完整的JavaS ...
  • 對location進行梳理,平時用的時候都是用什麼看什麼,今天把location整理一下,方便查詢 location.assign('地址') 等同於 location.href = '地址' 和 window.location = '地址' 後兩者使用的時候,也是觸發assign()方法,進行跳轉 ...
  • 在MyEclipse中JSON字元串的換行值是不同的,必須以'/n'換行,如果只是json驗證的問題,可以把json的驗證關掉試試。點擊所在的項目->Project->Proterties->MyEclipse->Validation,把JSON Validator中的Manual和Build的對號 ...
  • 功能:添加事件/完成事件/刪除事件 ...
  • 1.事件冒泡: 2.獲取某個元素的CSS屬性值: ...
  • 一、事件基礎 PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change... 移動端:cli ...
  • 產品終於上線,後期主要是優化了。在開發過程中用到了很多location對象的知識,趁現在有時間先整理一下。 Location 對象存儲在 Window 對象的 Location 屬性中,可通過window.location對其訪問,表示那個視窗中當前顯示的文檔的 Web 地址。它的 href 屬性存 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...