Vue基本使用


 

Vue基本使用

Vue.js是一款流行的開源JavaScript前端框架,旨在更好地組織與簡化Web開發。Vue所關注的核心是MVC模式中的視圖層,同時,它也能方便地獲取數據更新,並通過組件內部特定的方法實現視圖與模型的交互。由尤雨溪在2014年2月發布的。

一 基本語法 1. vue的使用要從創建Vue對象開始

let vm = new Vue();

2.創建vue對象

創建vue對象的時候,需要傳遞參數,是json對象,json對象對象必須至少有兩個屬性成員
vm = new Vue({
el:"#app",
data: {

  methods:{},

  watch:{},

  filters:{},
el:設置vue可以操作的html內容范圍,值就是css的id選擇器。

data: 保存vue.js中要顯示到html頁面的數據。

methods:定義函數。

watch:監聽屬性

filters:定義過濾器。

3.設置控制范圍

vue.js要控制器的內容外圍,必須先通過id來設置。
>
4 簡單示例

?
1
2
3
4
5
6
7
8
9
     <meta charset= "UTF-8" >
     <title>Title</title>
     <!--導入vue.js-->
     
 
 
<p id= "app" >
    {{message}}
</p>

效果如下:

\二 Vue.js的M-V-VM思想

MVVM 是 Model-View-ViewModel<喎�"/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPiC1xMv10LSjrMv8ysfSu9bWu/nT2sewtsu/qreitcS83Lm5xKPKvaGjPGJyIC8mZ3Q7PHN0cm9uZz5Nb2RlbDwvc3Ryb25nPiDWuLT6tcS+zcrHdnVlttTP87XEZGF0Ycr00NTA78PmtcTK/b7doaPV4sDvtcTK/b7d0qrP1Mq+tb3Ss8Pm1tChozxiciAvJmd0OzxzdHJvbmc+Vmlldzwvc3Ryb25nPiDWuLT6tcS+zcrHdnVl1tDK/b7d0qrP1Mq+tcRIVE1M0rPD5qOs1Np2dWXW0KOs0rKzxtauzqombGRxdW87ytPNvMSjsOUmcmRxdW87IKGjPGJyIC8mZ3Q7PHN0cm9uZz5WaWV3TW9kZWw8L3N0cm9uZz4g1ri0+rXEysd2dWUuanPW0M7Sw8ex4NC0tPrC68qxtcR2bbbUz/PBy6Osy/zKx3Z1ZS5qc7XEusvQxKOsuLrU8MGsvdMgVmlldyC6zSBNb2RlbKOssaPWpMrTzby6zcr9vt21xNK71sLQ1KOsy/nS1Meww+a0+sLr1tCjrGRhdGHA78PmtcTK/b7dsbvP1Mq+1tBwserHqdbQvs3Kx3ZtttTP89fUtq/N6rPJtcShozwvcD4KPHA+PGltZyBzcmM9"https://www.2cto.com/uploadfile/Collfiles/20190429/201904291855211003.png" alt="\" />

再來一個示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
     <meta charset= "UTF-8" >
     <title>Title</title>
     
 
 
<p id= "app" >
     <!-- 在雙標簽中顯示數據要通過 {{ }} 來實現-->
     {{name}}
     </p><p>{{age}}</p>
     <!-- 在表單輸入框中顯示數據要使用模板語法 v-model 來完成-->
     <input type= "text" v-model= "name" >
<p></p>

效果如圖

\

要是在輸入框中輸入,則html中的那么對應的值也會跟着改變

 

在瀏覽器中可以在 console.log通過 vm對象可以直接訪問el和data屬性,甚至可以訪問data里面的數據

console.log(vm.$el) # #box vm對象可以控制的范圍

console.log(vm.name); 顯示name的值

 

也可以通過console直接修改data中的值,頁面也會跟着改變

 

總結

1. 如果要輸出data里面的數據作為普通標簽的內容,需要使用{{ }} 用法: vue對象的data屬性: data:{

  name:"小明",}

標簽元素: {{ name }}

2. 如果要輸出data里面的數據作為表單元素的值,需要使用vue.js提供的元素屬性v-model 用法: vue對象的data屬性:   

data:{ name:"小明", }

表單元素:

 

三 顯示數據

顯示數據的一般規則:

 

在雙標簽中顯示數據要通過{{ }}來完成數據顯示

 

在表單輸入框中顯示數據要使用v-model來完成數據顯示

輸出html代碼,要使用v-html來輸出.v-html必須在html標簽里面作為屬性寫出來.

一下來個示例看看

?
1
2
3
4
5
6
7
8
9
10
11
12
13
     <meta charset= "UTF-8" >
     <title></title>
     
 
 
<p id= "app" >
     {{title}}
     {{ url1 }}
     用{{}}顯示出來的html代碼則會按原始字符串輸出 :
     {{ img }} <br>
     以下是圖片 <br>
     <span v-html= "img" ></span>   <br ><!--= "" 在此用data中的img來顯標簽屬性值,即就是把img原樣放入span中= "" --= "" >
</p>

效果如下:

\

 

在輸出內容到普通標簽的使用{{ }}還支持js代碼。

?
1
2
3
4
5
6
7
8
9
10
{{str1.split( "" ).reverse().join( "" )}}
     <!--支持js的運算符-->
     {{num1+ 3 }}
     <!--  js還有一種運算符,三元運算符,類似於python里面的三元表達式
         三元運算符的語法:
          判斷條件 ? 條件為 true : 條件為 false 的結果
         python 三元表達式[三目運算符]的語法:
         a if 條件 else b
      -->
     num1和num2之間進行比較,最大值:{{ num2>num1?num2:num1 }}

四 常用指令

指令 (Directives) 是帶有“v-”前綴的特殊屬性。每一個指令在vue中都有固定的作用。

在vue中,提供了很多指令,常用的有:v-if、v-model、v-for等等。

指令會在vm對象的data屬性的數據發生變化時,會同時改變元素中的其控制的內容或屬性。

因為vue的歷史版本原因,所以有一部分指令都有兩種寫法:

?
1
2
3
4
vue1.x寫法              vue2.x的寫法
v-html         ---->   {{  }}   # vue2.x 也支持v-html
v-bind:屬性名   ---->   :屬性
v-on:事件名     ---->   @事件名

4.1 操作屬性

格式:

?
1
<標簽名 :標簽屬性= "data屬性" ><!--標簽名-->
?
1
2
3
4
5
6
7
8
9
10
11
     <meta charset= "UTF-8" >
     <title>Title</title>
     
 
 
<p id= "index" >
     </p><p>
     <input :type= "type" placeholder= "請輸入密碼" >
     <button @click = "type='text'" >顯示密碼</button>
     </p>
<p></p>

 

點擊顯示密碼

4.2 事件綁定

有兩種事件操作的寫法,@事件名 和 v-on:事件名

?
1
2
<button v-on:click= "num++" >按鈕</button> <!-- v-on 是vue1.x版本的寫法 -->
<button @click = "num+=5" >按鈕 2 </button>

下面給button按鈕綁定點擊事件,實現num的加減,點擊“+”實現加1操作,點擊“-” 調用sub函數實現減1操作

?
1
2
3
4
5
6
7
8
9
10
     <meta charset= "UTF-8" >
     <title>Title</title>
     
 
 
<p id= "box" >
     <button @click = "num++" >+</button>
     <input type= "text" v-model= "num" >
     <button @click = "sub" >-</button>
</p>

4.3 操作樣式 4.3.1 控制標簽class類名

格式:

?
1
<h1 : class = "值" >元素  值可以是對象、對象名、數組</h1>

方式一:

添加class類名,值是一個對象 { class類1:布爾值變量1, class類2:布爾值變量2, }

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     <meta charset= "UTF-8" >
     <title>Title</title>
     
     <style>
         .box1{
             color: red;
             border: 1px solid # 000000 ;
         }
         .box2{
            
             font-size: 32px;
         }
     </style>
 
 
<p id= "box" >
     </p><p : class = "{box1:myclass1}" >一個段落</p>
     <p @click = "myclass3=!myclass3" : class = "{box1:myclass2,box2:myclass3}" >一個段落</p>
<p></p>

 

方式二:

上面的代碼可以:class的值保存到data里面的一個變量,然后使用該變量作為:class的值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     <meta charset= "UTF-8" >
     <title>Title</title>
     
     <style>
         .box4{
            
         }
         .box5{
             color: green;
         }
     </style>
 
 
<p id= "app" >
     <button @click = "mycls.box4=!mycls.box4" >改變背景</button>
     <button @click = "mycls.box5=!mycls.box5" >改變字體顏色</button>
     </p><p : class = "mycls" >第二個段落</p>
<p></p>

效果如圖

\

方式三

批量給元素增加多個class樣式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     <meta charset= "UTF-8" >
     <title>Title</title>
     
     <style>
         .box6{
            
         }
         .box7{
             color: green;
         }
         .box8{border: 3px solid blue;}
     </style>
 
 
<p id= "app" >
     </p><p : class = "[mycls1,mycls2]" >第三個段落</p>
<p></p>

 

總結:

?
1
2
3
4
5
6
7
8
9
10
11
12
給元素綁定 class 類名,最常用的就是方式二。
     vue對象的data數據:
         data:{
           myObj:{
             complete: true ,
             uncomplete: false ,
           }
         }
html元素:   
         <p class = "box" : class = "myObj" > 2222 </p>
最終瀏覽器效果:
         <p class = "box complete" > 2222 </p>

4.3.2 控制標簽style樣式

格式1:值是json對象,對象寫在元素的:style屬性中

?
1
2
3
4
5
6
7
標簽元素:
      <p :style= "{color: activeColor, fontSize: fontSize + 'px' }" ></p>
   data數據如下:
      data: {
          activeColor: 'red' ,
          fontSize: 30
      }

格式2:值是對象變量名,對象在data中進行聲明

?
1
2
3
4
5
6
7
8
9
標簽元素:
       <p v-bind:style= "styleObject" ></p>
   data數據如下:
          data: {
                 styleObject: {
                      color: 'red' ,
                      fontSize: '13px'
                  }
          }

格式3:值是數組

?
1
2
3
4
5
6
7
8
9
10
11
12
標簽元素:
    <p v-bind:style= "[style1, style2]" ></p>
     data數據如下:
           data: {
              style1:{
                 color: "red"
              },
              style2:{
                  background: "yellow" ,
                  fontSize: "21px"
              }
           }

 

4.4 條件渲染指令

vue中提供了兩個指令可以用於判斷是否要顯示元素,分別是v-if和v-show。

4.4.1 v-if

?
1
2
3
4
5
6
7
標簽元素:
       <!-- vue對象最終會把條件的結果變成布爾值 -->
             <h1 v- if = "ok" >Yes
   data數據:
           data:{
               ok: false    // true則是顯示,false是隱藏
       }</h1>

4.4.2 v-else

v-else指令來表示 v-if 的“else 塊”,v-else 元素必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會被識別。

?
1
2
3
4
5
6
7
標簽元素:
        <h1 v- if = "ok" >Yes
        </h1><h1 v- else = "" >No
  data數據:
          data:{
              ok: false    // true則是顯示,false是隱藏
      }</h1>

4.4.3 v-else-if

可以出現多個v-else-if語句,但是v-else-if之前必須有一個v-if開頭。后面可以跟着v-else,也可以沒有。

?
1
2
3
4
5
6
7
8
標簽元素:
     <h1 v- if = "num==1" >num的值為 1
     </h1><h1 v- else - if = "num==2" >num的值為 2
     </h1><h1 v- else = "" >num的值是{{num}}
data數據:
         data:{
             num: 2
     }</h1>

4.4.4 v-show

用法和v-if大致一樣,區別有以下兩點:

(1)v-show后面不能有v-else或者v-else-if

(2)v-show隱藏元素時,使用的是display:none來隱藏的,而v-if是直接從HTML文檔中移除(DOM操作中的remove)

?
1
2
3
4
5
6
標簽元素:
       <h1 v-show= "ok" >Hello!
data數據:
       data:{
             ok: false    // true則是顯示,false是隱藏
     }</h1>

4.5 列表渲染指令

在vue中,可以通過v-for指令可以將一組數據渲染到頁面中,數據可以是數組或者對象。

示例一:數據是數組

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     <meta charset= "UTF-8" >
     <title>Title</title>
     
 
 
<p id= "app" >
     
         <!--i是列表的每一個元素-->
         </p><li v- for = "book in book_list" >{{book.title}}
     
     
         <!--i是列表的每一個元素,j是每個元素的下標-->
         </li><li v- for = "(book, index) in book_list" >第{{ index+ 1 }}本圖書:{{book.title}}
     
<p></p>
 
 
 
</li>

示例二:數據是對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     <meta charset= "UTF-8" >
     <title>Title</title>
     
 
 
<p id= "app" >
    
        <!--i是每一個value值-->
        </p><li v- for = "value in book" >{{value}}
    
     
           <!--i是每一個value值,j是每一個鍵名-->
         </li><li v- for = "value,attr in book" > {{attr}}:{{value}}
     
<p></p>
 
 
</li>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM