Vue.js簡介

Vue.js 是一套構(gòu)建用戶界面的漸進(jìn)式框架。采用自底向上增量開發(fā)的設(shè)計。Vue的核心庫只關(guān)注視圖層,不僅易上手,還便于與第三方庫或既有項目整合。另一方面,當(dāng)與單文件組件和Vue生態(tài)系統(tǒng)支持的庫結(jié)合使用時,Vue也完全能夠為復(fù)雜的單頁應(yīng)用程序提供驅(qū)動。

聲明式渲染:

Vue.js的核心是一個允許采用簡潔的模板語法來聲明式的將數(shù)據(jù)渲染進(jìn) DOM 的系統(tǒng):

<script src="https://unpkg.com/vue"></script>

---------------------------------------------------------------------------------

<div id="app">

? {{message}}

</div>

-------------------------------------------------------------------------------------

<script>

? var app = new Vue({

? ? el: '#app',

? ? data: {

? ? ? message:"Hello Vue.js!"

? ? }

? })

</script>


數(shù)據(jù)和 DOM 已經(jīng)綁定在一起,所有的元素都是響應(yīng)式。

除文本插入,還有另一種方式綁定 DOM 元素屬性:

<div id="app-2">

? <span v-bind:title="message">鼠標(biāo)懸停幾秒鐘查看此處動態(tài)綁定的提示信息!</span>

</div>

<script>

? var app2 = new Vue ({

? ? el: '#app-2',

? ? data: {

? ? ? message: '頁面加載于' + new Date().toLocaleString()

? ? }

? })

</script>

v-bind 屬性被稱為指令。指令帶有前綴 v-,表示它們是 Vue 提供的特殊屬性。這里該指令的作用是:將這個元素節(jié)點(diǎn)的 title 屬性和 Vue 實(shí)例的 message 屬性保持一致。

條件與循環(huán):

控制切換一個元素:

<div id="app-3">

? <p v-if:"seen">現(xiàn)在你看到了我</p>

<div>

<script>

? var app3 = new Vue ({

? ? el: '#app-3',

? ? data: {

? ? ? seen:true

? }

})

</script>


在控制臺設(shè)置 app3.seen = false ,"現(xiàn)在你看到了我"會消失:

Vue不僅可以綁定DOM文本到數(shù)據(jù),也可以綁定DOM結(jié)構(gòu)到數(shù)據(jù)。Vue也提供一個強(qiáng)大過度效果系統(tǒng),可以在Vue插入/更新/刪除元素時自動應(yīng)用過渡效果。

還有其他很多指令,每個都有特殊的功能。如:v-for 指令可以綁定數(shù)組的數(shù)據(jù)來渲染一個項目列表:

<div id="app-4">

? <ol>

? ? <li v-for="todo in todos">

? ? ? {{todo.text}}

? ? </li>

? </ol>

</div>

<script>

? var app4 = new Vue ({

? ? el: '#app-4',

? ? data: {

? ? ? todos: [

? ? ? ? { text: '學(xué)習(xí) JavaScript' },

? ? ? ? { text: '學(xué)習(xí) Vue' },

? ? ? ? { text: '整個牛項目' }

? ? ? ]

? ? }

? })

</script>


在控制臺輸入app4.todos.push({text: 'CSS'}),會在列表中添加一個新項。


處理用戶輸入:

用 v-on 指令綁定一個事件監(jiān)聽器,通過它調(diào)用我們 Vue實(shí)例中定義的方法:

<div id="app-5">

? <p>{{message}}</p>

? <button v-on:click="reverseMessage">逆轉(zhuǎn)消息</button>

</div>

<script>

? var app5 = new Vue({

? ? el: '#app-5',

? ? data: {

? ? ? message: 'Hell Vue.js!'

? ? },

? ? methods: {

? ? ? reverseMessage: function () {

? ? ? ? this.message = this.message.split('').reverse().join('')

? ? ? }

? ? }

? })

</script>

逆轉(zhuǎn)前:

逆轉(zhuǎn)后:

在 reverseMessage 方法中,更新了應(yīng)用的狀態(tài),但沒有碰觸 DOM,所有的 DOM 操作都有 Vue 來操作,所編寫的代碼不需要關(guān)注底層邏輯。

Vue 還提供了 v-model 指令,它能輕松實(shí)現(xiàn)表單輸入和應(yīng)用狀態(tài)之間的雙向綁定:

<div id="app-6">

? <p>{{message}}</p>

? <input v-model="message">

</div>

<script>

var app6 = new Vue ({

el: '#app-6',

data: {

message: 'Hello !!!'

}

})

</script>


組件化應(yīng)用構(gòu)建

組件系統(tǒng)是 Vue 的另一個重要概念,因為他是一種抽象,允許我們使用小型,獨(dú)立和通??蓮?fù)用的組件構(gòu)建大型應(yīng)用。幾乎任意類型的應(yīng)用界面都可以抽象為一個組件樹。? 在 Vue 里,一個組件本質(zhì)上是一個擁有預(yù)定義選項的一個 Vue 實(shí)例。

<div id="app-7">

? <ol>

? ? <todo-item

? ? ? v-for="item in groceryList"

? ? ? v-bind:todo="item"

? ? ? v-bind:key="item.id">

? ? </todo-item>

? </ol>

</div>

<script>

? Vue.component('todo-item', {

? ? props: ['todo'],

? ? template: '<li>{{ todo.text }}</li>'

? })

? vue app7 = new Vue({

? ? el: '#app-7',

? ? data: {

? ? ? groceryList: [

? ? ? ? { id: 0, text: '蔬菜' },

? ? ? ? { id: 1, text: '水果' },

? ? ? ? { id: 2, text: '其他人吃的東西' }

? ? ? ]

? ? }

? })

</script>

我們已經(jīng)設(shè)法將應(yīng)用分割成了兩個更小的單元,子單元通過 props 接口實(shí)現(xiàn)了與父單元很好的解耦?,F(xiàn)在可以進(jìn)一步為我們的 todo-item 組件實(shí)現(xiàn)更復(fù)雜的模板和邏輯的改進(jìn),而不影響到父單元。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 下載安裝搭建環(huán)境 可以選npm安裝,或者簡單下載一個開發(fā)版的vue.js文件 瀏覽器打開加載有vue的文檔時,控制...
    冥冥2017閱讀 6,208評論 0 42
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,186評論 0 29
  • 特點(diǎn) 虛擬DOM1、DOM :成對出現(xiàn)的標(biāo)簽;PC上渲染還可以,但是在移動端渲染DOM效果很差;2、虛擬DOM 采...
    whbsspu閱讀 603評論 0 0
  • Vue 實(shí)例 屬性和方法 每個 Vue 實(shí)例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,389評論 0 6
  • Vue.js 是什么 Vue.js(類似于 view) 是一套構(gòu)建用戶界面的漸進(jìn)式框架。 與其他重量級框架不同的是...
    糖心m閱讀 388評論 0 0

友情鏈接更多精彩內(nèi)容