vue 的基本語法和經常使用指令

什麼是vue.jshtml

Vue.js是目前最火的一個前端框架,React是最流行的一個前端框架(React除了開發網站,還能夠開發手機App, Vue語法也是能夠用於進行手機App開發的,須要藉助於Weex)
Vue.js 是前端的**主流框架之一**,和Angular.js、React.js 一塊兒,併成爲前端三大主流框架!
Vue.js 是一套構建用戶界面的框架,**只關注視圖層**,它不只易於上手,還便於與第三方庫或既有項目整合。(Vue有配套的第三方類庫,能夠整合起來作大型項目的開發)前端

Vue.js模本語法vue

一、插值表達式後端

數據綁定最多見的形式就是使用 {{...}}(雙大括號)的文本插值數組

 <div id="app">
            <div>{{ message }}</div>
        </div>

        <script>
            new Vue({ el: '#app', data: { message: '<h1>vue的初次學習</h1>' } }) </script>

v-html 指令 :用於輸出 html 代碼:前端框架

 <div id="app">
            <div v-html="message"></div>
        </div>
        <script>
            new Vue({ el: '#app', data: { message: '<h1>vue的初次學習</h1>' } }) </script>

v-text 指令 :是用於輸出文本app

 <div id="app">
            <div v-text="message"></div>
        </div>
        <script>
            new Vue({ el: '#app', data: { message: '<h1>vue的初次學習</h1>' } }) </script>

二、Vue.js的條件判斷框架

v-if條件判斷指令函數

<div id="app">
            <p v-if="seen">如今你看到我了</p>
            <template v-if="ok">
                <h1>菜鳥教程</h1>
                <p>學的不只是技術,更是夢想!</p>
                <p>哈哈哈,打字辛苦啊!!!</p>
            </template>
        </div>

        <script>
            new Vue({ el: '#app', data: { seen: true, ok: true } }) </script>

若是 seen 爲true 這顯示 p 標籤。不然隱藏學習

注意:

一、 v-show 其用法和 v-if 相同也能夠設置元素的顯示或隱藏。可是不具有條件判斷功能 二、 v-else、v-else-if 能夠給v-if 設置一個 else 模塊、else-if模塊 三、 v-else 、v-else-if 必需要跟在 v-if 或v-else-if 模塊後面

三、Vue.js循環語法

v-for 指令須要以 site in sites 形式的特殊語法, sites 是源數據數組而且 site 是數組元素迭代的別名

1.迭代數組

<div id="app">
            <ol>
                <li v-for="site in sites"> {{ site.name }} </li>
            </ol>
        </div>
        <script>
            new Vue({ el: '#app', data: { sites: [ {name: 'Runoob'}, {name: 'Google'}, {name: 'Taobao'} ] } }) </script>

2.迭代對象中的屬性

<div v-for="(val, key, i) in userInfo"> {{val}} --- {{key}} --- {{i}} </div>

其中:【userinfo】是一個對象

3.迭代數字

<p v-for="i in 10">這是第 {{i}} 個P標籤</p>

四、Vue.js 經常使用指令

v-cloak : 可以解決插值表達式閃爍的問題

v-bind :是vue提供的用於綁定屬性的指令。能夠簡寫爲  :要綁定的指令

<input type="button" value="按鈕" v-bind:title="mytitle + '123'">

<script>
            var vm = new Vue({ el: '#app', data: { mytitle: '這是一個本身定義的title' }, methods: { show: function() { alert('Hello') } } }) </script>

v-model :v-bind 只能實現數據的單向綁定。從M 自動綁定到V , 沒法實現數據的雙向綁定。 而 v-model 指令則能夠實現表單元素和 M中數據的雙向綁定。

注意:v-model指令只能運用在表單元素中

<div id="app">
            <h4>{{ msg }}</h4>
            <!-- input(radio, text, address, email....) select checkbox textarea -->
            <input type="text" style="width:100%;" v-model="msg">
        </div>

        <script>
            // 建立 Vue 實例,獲得 ViewModel
            var vm = new Vue({ el: '#app', data: { msg: '你們都是好學生,愛敲代碼,愛學習,愛思考,簡直是完美,沒瑕疵!' }, methods: {} }); </script>

補充說明:前端MVVM 與後端的MVC的區別。

MVC:是後端分層開發的概念。

MVVM是前端視圖層的概念。主要關注於視圖層分離,也就是說:MVVM吧前端的視圖層分爲了三部分。Model ,View ,VM ViewModel

五、Vue.js 事件處理器

v-on :事件監聽可使用 v-on 指令 

<div id="app">
            <!-- `greet` 是在下面定義的方法名 -->
            <button v-on:click="greet">Greet</button>
        </div>

        <script>
            var app = new Vue({ el: '#app', data: { name: 'Vue.js' }, // 在 `methods` 對象中定義方法
 methods: { greet: function(event) { // `this` 在方法裏指當前 Vue 實例
 alert('Hello ' + this.name + '!') // `event` 是原生 DOM 事件
                        if(event) { alert(event.target.tagName) } } } }) </script>

六、事件修飾符

.stop       阻止冒泡

.prevent    阻止默認事件

.capture    添加事件偵聽器時使用事件捕獲模式

.self       只當事件在該元素自己(好比不是子元素)觸發時觸發回調

.once      事件只觸發一次

<div id="app">

            <!-- 使用 .stop 阻止冒泡 -->
            <div class="inner" @click="div1Handler">
                <input type="button" value="戳他" @click.stop="btnHandler">
            </div>

            <!-- 使用 .prevent 阻止默認行爲 -->
            <!-- <a href="http://www.baidu.com" @click.prevent="linkClick">有問題,先去百度</a> -->

            <!-- 使用 .capture 實現捕獲觸發事件的機制 -->
            <div class="inner" @click.capture="div1Handler">
                <input type="button" value="戳他" @click="btnHandler">
            </div> --> <!-- 使用 .self 實現只有點擊當前元素時候,纔會觸發事件處理函數 -->
            <div class="inner" @click="div1Handler">
                <input type="button" value="戳他" @click="btnHandler">
            </div>

            <!-- 使用 .once 只觸發一次事件處理函數 -->
            <!-- <a href="http://www.baidu.com" @click.prevent.once="linkClick">有問題,先去百度</a> -->

            <!-- 演示: .stop 和 .self 的區別 -->
            <div class="outer" @click="div2Handler">
                <div class="inner" @click="div1Handler">
                    <input type="button" value="戳他" @click.stop="btnHandler">
                </div>
            </div>

            <!-- .self 只會阻止本身身上冒泡行爲的觸發,並不會真正阻止 冒泡的行爲 -->
            <div class="outer" @click="div2Handler">
                <div class="inner" @click.self="div1Handler">
                    <input type="button" value="戳他" @click="btnHandler">
                </div>
            </div>

        </div>

        <script>
            // 建立 Vue 實例,獲得 ViewModel
            var vm = new Vue({ el: '#app', data: {}, methods: { div1Handler() { console.log('這是觸發了 inner div 的點擊事件') }, btnHandler() { console.log('這是觸發了 btn 按鈕 的點擊事件') }, linkClick() { console.log('觸發了鏈接的點擊事件') }, div2Handler() { console.log('這是觸發了 outer div 的點擊事件') } } }); </script>

七、按鍵修飾符

v-on:keyup : 容許爲 v-on 在監聽鍵盤事件時添加按鍵修飾符

<input v-on:keyup.enter="submit">

綁定一個回車按鍵時間

八、Vue.js 樣式的綁定

一、Class屬性的綁定(v-bind:class)

 

<style> .active { width: 100px; height: 100px; background: green;
            }
        </style>

<div id="app">
            <div v-bind:class="{ active: isActive }"></div>
        </div>

<script>
            new Vue({ el: '#app', data: { isActive: true } }) </script>

也能夠:

<div id="app">
            <div v-bind:class="active"></div>
        </div>

二、數組語法

 即咱們能夠向v-bind:class 傳遞一個數組

<style> .active { width: 100px; height: 100px; background: green;
            } .text-danger { background: red;
            }
        </style>
        <div id="app">
            <div v-bind:class="[activeClass, errorClass]"></div>
        </div>

        <script>
            new Vue({ el: '#app', data: { isActive: true, activeClass: 'active', errorClass: 'text-danger' } }) </script>

同時在數組中咱們也可使用三元表達式:

<div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>

三、Vue.js 的內聯樣式(v-bind:style)

一、直接設置樣式

<div id="app">
                <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">測試內聯樣式</div>
            </div>

二、綁定樣式對象 

<div id="app">
            <div v-bind:style="styleObject">測試綁定樣式對象</div>
        </div>

        <script>
            new Vue({ el: '#app', data: { styleObject: { color: 'green', fontSize: '30px' } } }) </script>

三、綁定多個樣式對象 

<div id="app">
            <div v-bind:style="[baseStyles, overridingStyles]">綁定多個樣式對象</div>
        </div>

        <script>
            new Vue({ el: '#app', data: { baseStyles: { color: 'green', fontSize: '30px' }, overridingStyles: { 'font-weight': 'bold' } } }) </script>

 

 

 

 

 

 

 

 

原文出處:https://www.cnblogs.com/wujiaofen/p/11232056.html

相關文章
相關標籤/搜索