最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue概念及常見命令介紹(1)

 更新時(shí)間:2016年12月08日 10:50:37   作者:Suyd  
這篇文章主要為大家詳細(xì)介紹了Vue概念及常見命令,介紹了vue.js聲明式渲染、雙向綁定及常用指令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Vue.js介紹

Vue.js是JavaScript MVVM(Model-View-ViewModel)庫,十分簡潔,Vue核心只關(guān)注視圖層,相對(duì)AngularJS提供更加簡潔、易于理解的API。Vue盡可能通過簡單的API實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。

Vue和MVVM模式

MVVM模式即Model-View-ViewModel。

Vue是以數(shù)據(jù)為驅(qū)動(dòng)的,Vue自身將DOM和數(shù)據(jù)進(jìn)行綁定,一旦創(chuàng)建綁定,DOM和數(shù)據(jù)將保持同步,每當(dāng)數(shù)據(jù)發(fā)生變化,DOM會(huì)跟著變化。

ViewModel是Vue的核心,它是Vue的一個(gè)實(shí)例。Vue實(shí)例時(shí)作用域某個(gè)HTML元素上的,這個(gè)HTML元素可以是body,也可以是某個(gè)id所指代的元素。

DOM Listeners和Data Bindings是實(shí)現(xiàn)雙向綁定的關(guān)鍵。DOM Listeners監(jiān)聽頁面所有View層DOM元素的變化,當(dāng)發(fā)生變化,Model層的數(shù)據(jù)隨之變化;Data Bindings監(jiān)聽Model層的數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)生變化,View層的DOM元素隨之變化。

Vue.js特點(diǎn)

簡潔:頁面由HTML模板+Json數(shù)據(jù)+Vue實(shí)例組成
數(shù)據(jù)驅(qū)動(dòng):自動(dòng)計(jì)算屬性和追蹤依賴的模板表達(dá)式
組件化:用可復(fù)用、解耦的組件來構(gòu)造頁面
輕量:代碼量小,不依賴其他庫
快速:精確有效批量DOM更新
模板友好:可通過npm,bower等多種方式安裝,很容易融入

Vue.js入門小例子

聲明式渲染

本例子由HTML模板(View)+Json數(shù)據(jù)(Model)+Vue實(shí)例(ViewModel)組成。

創(chuàng)建Vue的實(shí)例,需傳入一個(gè)選項(xiàng)對(duì)象,如:數(shù)據(jù)、掛載元素、方法、模生命周期鉤子等。本例子中,選項(xiàng)對(duì)象的el屬性為#app,表示Vue實(shí)例掛載在<div id="app">...</div>元素上,data屬性為exampleData,表示Model為exampleData。View中{{message}}是Vue的一種數(shù)據(jù)綁定語法,在運(yùn)行時(shí),{{message}}會(huì)被數(shù)據(jù)對(duì)象的message屬性替換。

<!DOCTYPE html>
<html>
 <head>
 <title>聲明式渲染</title>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script> 
 </head>
 <body>
 <!-- View -->
 <div id="app">
 {{message}}
 </div>
 <script>
 //Model
 var exampleData = {
 message: 'Hello Vue!'
 }
 //ViewModel
 var app = new Vue({
 el: '#app',
 data: exampleData
 })
 </script>
 </body>
</html>

雙向綁定

在Vue中使用v-model在表單元素上實(shí)現(xiàn)雙向綁定。當(dāng)在輸入框輸入的信息發(fā)生變化,<p>...</p>中的信息隨之變化;當(dāng)通過控制臺(tái)中的Console,修改exampleData.message的值,輸入框中的信息也隨之變化。

<!DOCTYPE html>
<html lang="en">
 <head>
 <title>雙向綁定</title>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <!-- View -->
 <div id="app">
 <p>{{message}}</p>
 <input type="text" v-model="message">
 </div>
 <script>
 //Model
 var exampleData = {
 message: 'Hello Vue!'
 }
 //ViewModel
 var app = new Vue({
 el: '#app',
 data: exampleData
 })
 </script>
 </body>
</html>

運(yùn)行截圖:

Vue.js常用指令

Vue指令以v-開頭,作用在HTML元素上,將指令綁定在元素上時(shí),會(huì)給綁定的元素添加一些特殊行為,可將指令視作特殊的HTML屬性(attribute)。

下面將介紹Vue中常用的幾個(gè)內(nèi)置指令。當(dāng)然,Vue除了內(nèi)置指令,也可以根據(jù)需求自定義指令。

v-if指令

條件判斷指令,根據(jù)表達(dá)式值的真假來插入或刪除元素,表達(dá)式返回一個(gè)布爾值,語法如下:

v-if = "expression"

例子:

在本例中,表達(dá)式是yes,no,和age>25,yes的值為true,因此在HTML中顯示該元素,其他同理。

<!DOCTYPE html>
<html lang="en">
 <head>
 <title>v-if指令</title>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <h1 v-if="yes">Yes</h1>
 <h1 v-if="no">No</h1>
 <h1 v-if="age > 25">Age: {{age}}</h1>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 yes: true,//值為真,插入元素
 no: false,//值為假,不插入元素
 age: 28
 }
 })
 </script>
 </body>
</html>

運(yùn)行截圖:

v-show指令

條件渲染指令,與v-if不同的是,無論v-show的值為true或false,元素都會(huì)存在于HTML代碼中;而只有當(dāng)v-if的值為true,元素才會(huì)存在于HTML代碼中。v-show指令只是設(shè)置了元素CSS的style值。語法如下:

v-show = "expression"

例子:

<!DOCTYPE html>
<html lang="en">
 <head>
 <title>v-show指令</title>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <h1 v-show="yes">Yes</h1>
 <h1 v-show="no">No</h1>
 <h1 v-show="age > 25">Age: {{age}}</h1>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 yes: true,//值為真
 no: false,//值為假
 age: 28
 }
 })
 </script>
 </body>
</html>

運(yùn)行截圖:

v-else指令

可配合v-if或v-show使用,v-else指令必須緊鄰v-if或v-show,否則該命令無法正常工作。v-else綁定的元素能否渲染在HTML中,取決于前面使用的是v-if還是v-show。若前面使用的是v-if,且v-if值為true,則v-else元素不會(huì)渲染;若前面使用的是v-show,且v-show值為true,則v-else元素仍會(huì)渲染到HTML。

v-for指令

循環(huán)指令,基于一個(gè)數(shù)組渲染一個(gè)列表,與JavaScript遍歷類似,語法如下:

v-for = "item in items"

例子:

在本例中,數(shù)組是todos,依次遍歷數(shù)組todos中的每個(gè)元素,將text部分顯示。

<!DOCTYPE html>
<html lang="en">
 <head>
 <title>v-for指令</title>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <ol>
 <li v-for="todo in todos">{{todo.text}}</li>
 </ol>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 todos: [
 {text: 'learn Javascript'},
 {text: 'learn Vue'},
 {text: 'learn ...'}
 ]
 }
 })
 </script>
 </body>
</html>

運(yùn)行截圖:

在瀏覽器控制臺(tái)里Console,輸入app.todos.push({text: 'new item'}),則會(huì)插入新的一條信息。

運(yùn)行截圖:

v-bind指令

給DOM綁定元素屬性,語法如下:

v-bind:argument="expression"

其中,argument通常是HTML元素的特性,如:v-bind:class="expression"。

注:v-bind指令可以縮寫為:冒號(hào)。如::class="expression"。

例子:

在本例子中,當(dāng)鼠標(biāo)懸停在span標(biāo)簽的文字上時(shí),會(huì)顯示加載網(wǎng)頁的時(shí)間。

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <span v-bind:title="message">Hover your mouse over me</span>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 message: 'you loaded this page on ' + new Date()
 }
 })
 </script>
 </body>
</html>

v-on指令

用于監(jiān)聽DOM事件,語法與v-bind類似,如監(jiān)聽點(diǎn)擊事件v-on:click="doSth"。

注:v-on指令可以縮寫為@符號(hào)。如:@click="doSth"。

例子:

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <p><input type="text" v-model="message"></p>
 <p>
 <button v-on:click="greet">Greet</button>
 </p>
 <p>
 <button v-on:click="say('hello vue')">Hello</button>
 </p>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 message: 'Greet to Vue'
 },
 methods: {
 greet: function(){
 alert(this.message);
 },
 say: function(msg){
 alert(msg);
 }
 }
 })
 </script>
 </body>
</html>

運(yùn)行結(jié)果:

一個(gè)綜合性例子

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 </head>
 <body>
 <div id="app">
 <fieldset>
 <legend>Create New</legend>

 <label for="">Name:</label>
 <input type="text" v-model="newPerson.name">

 <label for="">Age:</label>
 <input type="text" v-model="newPerson.age">

 <label for="">Age:</label>
 <select name="" id="" v-model="newPerson.sex">
 <option value="Male">Male</option>
 <option value="Female">Female</option>
 </select>

 <button @click="createPerson">Create</button>
 </fieldset>
 <table>
 <tr>
 <th>Name</th>
 <th>Age</th>
 <th>Sex</th>
 <th>Delete</th>
 </tr>
 <tr v-for="person in people">
 <td>{{person.name}}</td>
 <td>{{person.age}}</td>
 <td>{{person.sex}}</td>
 <td><button @click="deletePerson($index)">Delete</button></td>
 </tr>
 </table>
 </div>
 <script>
 var app = new Vue({
 el: '#app',
 data: {
 newPerson: {
 name: '',
 age: 0,
 sex: 'Male'
 },
 people: [{
 name: 'tyy',
 age: 24,
 sex: 'Male'
 }, {
 name: 'syd',
 age: 24,
 sex: 'Female'
 }]
 },
 methods: {
 createPerson: function(){
 this.people.push(this.newPerson);
 this.newPerson = {
 name: '',
 age: 0,
 sex: 'Male'
 }
 },
 deletePerson: function(index){
 this.people.splice(index, 1);
 }
 }
 })
 </script>
 </body>
</html>

運(yùn)行截圖:

參考鏈接:

Vue.js 60分鐘輕松入門

介紹vue.js

本文已被整理到了《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全面解析Vue中的$nextTick

    全面解析Vue中的$nextTick

    這篇文章主要介紹了Vue中的$nextTick的相關(guān)資料,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • element使用自定義icon圖標(biāo)的詳細(xì)步驟

    element使用自定義icon圖標(biāo)的詳細(xì)步驟

    前端經(jīng)常會(huì)用到UI提供的各種圖表,推薦阿里的圖標(biāo)庫,下面這篇文章主要給大家介紹了關(guān)于element使用自定義icon圖標(biāo)的詳細(xì)步驟,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程

    vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程

    這篇文章主要介紹了vue3網(wǎng)絡(luò)請(qǐng)求添加loading過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue3觸發(fā)父組件兩種寫法

    vue3觸發(fā)父組件兩種寫法

    這篇文章主要介紹了vue3觸發(fā)父組件兩種寫法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 解決vue keep-alive 數(shù)據(jù)更新的問題

    解決vue keep-alive 數(shù)據(jù)更新的問題

    今天小編就為大家分享一篇解決vue keep-alive 數(shù)據(jù)更新的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 淺談vue中數(shù)據(jù)雙向綁定的實(shí)現(xiàn)原理

    淺談vue中數(shù)據(jù)雙向綁定的實(shí)現(xiàn)原理

    本篇文章主要介紹了淺談vue中數(shù)據(jù)雙向綁定的實(shí)現(xiàn)原理 ,主要使用v-model這個(gè)數(shù)據(jù)雙向綁定,有興趣的可以了解一下
    2017-09-09
  • Vue3+Element?Plus使用svg加載iconfont的處理方法

    Vue3+Element?Plus使用svg加載iconfont的處理方法

    這篇文章主要介紹了Vue3+Element?Plus使用svg加載iconfont的解決方案,本文詳細(xì)介紹了如何在Element?Plus中使用iconfont,簡單的說就是要將其封裝成SVG,并且支持動(dòng)態(tài)修改顏色,需要的朋友可以參考下
    2022-08-08
  • 前端框架Vue.js中Directive知識(shí)詳解

    前端框架Vue.js中Directive知識(shí)詳解

    這篇文章主要為大家詳細(xì)介紹了前端框架Vue.js中Directive知識(shí),感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue實(shí)現(xiàn)搜索過濾效果

    vue實(shí)現(xiàn)搜索過濾效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)搜索過濾效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • vue 配置多頁面應(yīng)用的示例代碼

    vue 配置多頁面應(yīng)用的示例代碼

    這篇文章主要介紹了vue 配置多頁面應(yīng)用的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10

最新評(píng)論

明光市| 罗江县| 和硕县| 浠水县| 高雄县| 永寿县| 牡丹江市| 永州市| 定结县| 昌邑市| 和静县| 堆龙德庆县| 三原县| 湛江市| 金堂县| 普定县| 海淀区| 绥棱县| 南投县| 海兴县| 始兴县| 蒲城县| 双桥区| 长治县| 浦东新区| 建阳市| 高阳县| 苏尼特左旗| 广宁县| 湟中县| 亳州市| 正镶白旗| 吕梁市| 广汉市| 河曲县| 永靖县| 上犹县| 乌拉特后旗| 开远市| 堆龙德庆县| 德庆县|