天天看點

【第一篇】Vue的初次邂逅

【第一篇】Vue的初次邂逅

  因為最近需要使用到Vue,是以打算将Vue的學習資料詳細整理一份,感興趣的小夥伴可以一起來哦。

一、Vue基礎介紹

1.什麼是Vue.js

  • Vue.js 是目前最火的一個前端架構,React是最流行的一個前端架構(React除了開發網站,還可以開發手機App, Vue文法也是可以用于進行手機App開發的,需要借助于Weex)
  • Vue.js 是前端的主流架構之一,和Angular.js、React.js 一起,并成為前端三大主流架構!
  • Vue.js 是一套建構使用者界面的架構,隻關注視圖層,它不僅易于上手,還便于與第三方庫或既有項目整合。(Vue有配套的第三方類庫,可以整合起來做大型項目的開發)
  • 前端的主要工作?主要負責MVC中的V這一層;主要工作就是和界面打交道,來制作前端頁面效果;

2.為什麼要學習流行架構

  • 企業為了提高開發效率:在企業中,時間就是效率,效率就是金錢;
  • 企業中,使用架構,能夠提高開發的效率;
  • 提高開發效率的發展曆程:原生JS -> Jquery之類的類庫 -> 前端模闆引擎 -> Angular.js / Vue.js(能夠幫助我們減少不必要的DOM操作;提高渲染效率;雙向資料綁定的概念【通過架構提供的指令,我們前端程式員隻需要關心資料的業務邏輯,不再關心DOM是如何渲染的了】)
  • 在Vue中,一個核心的概念,就是讓使用者不再操作DOM元素,解放了使用者的雙手,讓程式員可以更多的時間去關注業務邏輯;

3.Node(後端)中的 MVC 與 前端中的 MVVM 之間的差別

  • MVC 是後端的分層開發概念;
  • MVVM是前端視圖層的概念,主要關注于 視圖層分離,也就是說:MVVM把前端的視圖層,分為了 三部分 Model, View , VM ViewModel
  • 為什麼有了MVC還要有MVVM
【第一篇】Vue的初次邂逅

MVVM是前端視圖層的分層開發思想,主要把每個頁面,分成了M,V和VM,其中VM是MVVM的思想核心:因為VM連接配接着M和V。

前端頁面中使用MVVM的思想,主要是為了讓我們開發MVVM提供了資料的雙向綁定,雙向綁定是由VM提供的

二、Vue基本使用

  此次代碼工具是Visual Studio Code,小夥伴可自行下載下傳安裝。

1.第一個案例

  代碼如下:

<!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>
  <!-- 1. 導入Vue的包 -->
  <script src="./lib/vue-2.4.0.js"></script>
</head>

<body>
  <!-- 将來 new 的Vue執行個體,會控制這個 元素中的所有内容 -->
  <!-- 3. Vue 執行個體所控制的這個元素區域,就是我們的 V  -->
  <div id="app">
    <p>{{ msg }}</p>
  </div>

  <script>
    // 2. 建立一個Vue的執行個體
    // 當我們導入包之後,在浏覽器的記憶體中,就多了一個 Vue 構造函數
    //  注意:我們 new 出來的這個 vm 對象,就是我們 MVVM中的 VM排程者
    var vm = new Vue({
      el: '#app',  // 表示,目前我們 new 的這個 Vue 執行個體,要控制頁面上的哪個區域
      // 這裡的 data 就是 MVVM中的 M,專門用來儲存 每個頁面的資料的
      data: { // data 屬性中,存放的是 el 中要用到的資料
      msg: '歡迎學習Vue' // 通過 Vue 提供的指令,很友善的就能把資料渲染到頁面上,程式員不再手動操作DOM元素了【前端的Vue之類的架構,不提倡我們去手動操作DOM元素了】
      }
    })
  </script>
</body>

</html>      

注意代碼中的注釋!

通路頁面

【第一篇】Vue的初次邂逅
【第一篇】Vue的初次邂逅

2.常用指令

指令 描述
{{}} 插值表達式
v-cloak 解決 插值表達式閃爍的問題
v-text 和插值一樣也是使用vue中的變量,但是預設沒有閃縮問題,但是會覆寫原本的内容,插值不會
v-html 顯示HTML的内容
v-bind Vue提供的屬性綁定機制,縮寫是 ‘:’
v-on Vue提供的事件綁定機制,縮寫是:‘@’

2.1 插值表達式

  在HTML頁面中我們需要擷取Vue中的資料,這時我們可以通過插值表達式來擷取,如下

<div id="app">
    <!-- 插值表達式擷取vue中的msg資訊 -->
    <p>{{ msg }}</p>
  </div>

  <script>
    var vm = new Vue({
      el: '#app', 
      data: {
        msg: '歡迎學習Vue' 
      }
    })
</script>      

注意:插值表達式有閃縮的問題

我們以站點的方式啟動,Ctrl+shift+p :在輸入中搜尋 如下

【第一篇】Vue的初次邂逅
【第一篇】Vue的初次邂逅

通路位址:http://localhost/xxx.html

【第一篇】Vue的初次邂逅
【第一篇】Vue的初次邂逅

加載完成就會變好!這就是插值閃爍的問題

2.2 v-cloak

  v-cloak指令可以解決上面插值閃爍的問題,如下:其實利用的就是當插值沒有被加載出來的是通過 style屬性将内容給隐藏了。

<!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] {
       display: none; 
    }
  </style>
</head>

<body>
  <div id="app">
    <!-- 使用 v-cloak 能夠解決 插值表達式閃爍的問題 -->
    <p v-cloak>++++++++ {{ msg }} ----------</p>
  </div>
  <script src="./lib/vue-2.4.0.js"></script>

  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello',
      }
    })
  </script>
</body>

</html>      

2.3 v-text

  和插值差不多,也可以從vue對象中擷取資訊,v-text預設是沒有閃爍問題的,但是會覆寫掉原有的内容,但是 插值表達式 隻會替換自己的這個占位符,不會把 整個元素的内容清空,如下

<!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>
    <script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
    <div id="app">
        <p>----{{msg}}=====</p>
        <p v-text="msg"></p>
        <p v-text="msg">*******</p>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                msg:"hello vue"
            }
        })
    </script>
</body>
</html>      
【第一篇】Vue的初次邂逅

2.4 v-html

  預設我們從Vue對象中擷取的資訊如果含有HTML标簽的話隻會當做普通字元串顯示,如果我們要顯示标簽的語義,那麼需要使用v-html指令如下

<!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>
    <script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
    <div id="app">
        <p>----{{msg}}=====</p>
        <p v-text="msg"></p>
        <p v-text="msg">*******</p>
        <p v-html="msg"></p>
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                msg:"<h3>hello vue</h3>"
            }
        })
    </script>
</body>
</html>      
【第一篇】Vue的初次邂逅

2.5 v-bind

  v-bind是 Vue中,提供的用于綁定屬性的指令,可簡寫為":",屬性中的内容其實寫的是js表達式,可以做類似的處理,見代碼。

<!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>
    <script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="送出1" title="送出按鈕"><br>
        <input type="button" value="送出2" v-bind:title="title">
        <!-- 注意: v-bind: 指令可以被簡寫為 :要綁定的屬性 -->
        <input type="button" value="送出2" :title="title">
        <!-- v-bind 中,可以寫合法的JS表達式-->
       <input type="button" value="送出2" :title="title + ' bbb'">
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                title:"title123"
            }
        })
    </script>
</body>
</html>      
【第一篇】Vue的初次邂逅

2.6 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>
    <script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="點選" v-on:click="show">
        <!--還可以縮寫為 @-->
        <input type="button" value="點選" @click="show">
    </div>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                msg:"<h3>hello vue</h3>"
            },
            methods:{
                show:function(){
                    alert('hello')
                }
            }
        })
    </script>
</body>
</html>      

繼續閱讀