快速入門Vue
一、什么是Vue?
Vue.js(讀音 /vju?/, 類似于 view) 是一套構(gòu)建用戶界面的 漸進(jìn)式框架。與其他重量級框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計(jì)。Vue 的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫或已有項(xiàng)目整合。另一方面,Vue 完全有能力驅(qū)動(dòng)采用單文件組件和 Vue 生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。如果你是有經(jīng)驗(yàn)的前端開發(fā)者,想知道 Vue.js 與其它庫/框架的區(qū)別,查看對比其它框架。
以上內(nèi)容摘自http://cn.vuejs.org/v2/guide/,說實(shí)話,我是沒看懂寫的是個(gè)啥,如果你是來來搞懂這個(gè)問題的,那么你要失望了,請自行去百度,順便百度下MVVM,再去了解下reactjs和angularjs,然后再了解下區(qū)別。
二、快速上手
對于碼農(nóng)來講,別跟我扯那些有的沒得,如何能讓我在最小的學(xué)習(xí)代價(jià)下能快速使用,迅速掌握這個(gè)2016年前端最火的技術(shù)之一,才是每一個(gè)碼農(nóng)關(guān)心的問題好么,進(jìn)入正題,不過在這之前,還是希望大家去了解一下有關(guān)前端框架的相關(guān)知識,包括有一定的javascript,html和css的相關(guān)經(jīng)驗(yàn)再往下看。
vue官方提供了兩種不同的安裝方案,簡單的來講,就是簡化版和完整版,其中的區(qū)別,我會(huì)在之后的文章里講清楚,要快速上手,當(dāng)然是選擇簡化版,對于簡化版的使用,vue比react和angular簡直是簡單到爆,只需引入一個(gè)js文件,寫入我們的html文件,我們就可以使用vue的所有基本功能,可能還有很多jquery的童鞋會(huì)說,我大jquery不是也只需要引一個(gè)js文件嘛,請了解清楚,jquery只是一個(gè)javascript的工具庫,而vue,是一款偉大的MVVM前端框架。
首先,新建一個(gè)html文件出來,然后添加下面的代碼
<script src="https://unpkg.com/vue/dist/vue.js"></script>
好了,我們可以使用Vue了,第一件事,當(dāng)然是打開Vue的API使用指南啊,看一眼,這個(gè)竟然有中文版的,好嘞,花個(gè)三十分鐘左右的時(shí)間把基礎(chǔ)的代碼擼一遍。
下面是我擼的代碼,簡單注釋已經(jīng)加好:
<!DOCTYPE html> <html> <head> <title>Vue demo</title> <script src="./vue.js"></script> </head> <body> <div id="app"> {{message}} </div> <div id="app-2" v-bind:title="message"> <span> Hover your mouse over me for a few seconds to see my dynamically bound title! </span> </div> <dir id="app-3"> <p v-if="seen">Now you can see me</p> </dir> <div id="app-4"> <ol> <li v-for="todo in todos"> {{todo.text}} </li> </ol> </div> <div id="app-5"> <p>{{message}}</p> <button v-on:click="reverseMessage">Reverse Message</button> </div> <div id="app-6"> <p>{{message}}</p> <input v-model="message"> </div> <div id="app-7"> <ol> <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item> </ol> </div> </body> <script type="text/javascript"> <!-- 聲明式渲染 --> var app = new Vue({ el: '#app', data: { message: 'My first vue app' } }); var app2 = new Vue({ el: '#app-2', data: { message: 'You load this page on ' + new Date() } }); <!-- if條件判斷 --> var app3 = new Vue({ el: '#app-3', data: { seen: true } }); <!-- for循環(huán) --> var app4 = new Vue({ el: "#app-4", data: { todos: [ {text: 'Learn javascript'}, {text: 'Learn Vue'}, {text: 'Build something awesome'} ] } }); <!-- 處理用戶輸入 --> var app5 = new Vue({ el: '#app-5', data: { message: 'Hello Vue.js' }, methods: { reverseMessage: function() { this.message = this.message.split('').reverse().join('') } } }); var app6 = new Vue({ el: '#app-6', data: { message: 'Hello Vue!' } }); <!-- 組件的使用 --> Vue.component('todo-item', { props: ['todo'], template: '<li>{{todo.text}}</li>' }); var app7 = new Vue({ el: '#app-7', data: { groceryList: [ {text: 'Vegetables'}, {text: 'Cheese'}, {text: 'Whatever else humans are supposed to eat'} ] } }); </script> </html>
整體的頁面顯示效果如下:
在這里,有一個(gè)Vue中非常重要的概念——組件。因?yàn)樗峁┝艘环N抽象,讓我們可以用獨(dú)立可復(fù)用的小組件來構(gòu)建大型應(yīng)用。如果我們考慮到這點(diǎn),幾乎任意類型的應(yīng)用的界面都可以抽象為一個(gè)組件樹:
在 Vue 里,一個(gè)組件實(shí)質(zhì)上是一個(gè)擁有預(yù)定義選項(xiàng)的一個(gè) Vue 實(shí)例:
Vue.component('todo-item', { template: '<li>This is a todo</li>' })
現(xiàn)在你可以另一個(gè)組件模板中寫入它:
<ol> <todo-item></todo-item> </ol>
但是這樣會(huì)為每個(gè) todo 渲染同樣的文本,這看起來并不是很酷。我們應(yīng)該將數(shù)據(jù)從父作用域傳到子組件。讓我們來修改一下組件的定義,使得它能夠接受一個(gè) prop 字段:
Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' })
現(xiàn)在,我們可以使用 v-bind 指令將 todo 傳到每一個(gè)重復(fù)的組件中:
<div id="app-7"> <ol> <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item> </ol> </div>
Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }) var app7 = new Vue({ el: '#app-7', data: { groceryList: [ { text: 'Vegetables' }, { text: 'Cheese' }, { text: 'Whatever else humans are supposed to eat' } ] } })
這只是一個(gè)假設(shè)的例子,但是我們已經(jīng)將應(yīng)用分割成了兩個(gè)更小的單元,子元素通過 props 接口實(shí)現(xiàn)了與父親元素很好的解耦。我們現(xiàn)在可以在不影響到父應(yīng)用的基礎(chǔ)上,進(jìn)一步為我們的 todo 組件改進(jìn)更多復(fù)雜的模板和邏輯。
從代碼上面來看,還是標(biāo)準(zhǔn)的javascript寫法,只是定義了Vue這個(gè)對象,進(jìn)行的所有操作都是通過Vue這個(gè)對象來實(shí)現(xiàn)的,這一部分的代碼簡單介紹了Vue的使用,相信大多數(shù)的項(xiàng)目中使用最多還是這些數(shù)據(jù)綁定,判斷循環(huán),用戶輸入,綁定事件。
不過話說回來,我們?yōu)槭裁匆褂肰ue?各位看官自行百度一下去吧,我這里不吹不黑,只是一個(gè)簡單的上手系列文章,由淺入深,跟著官方指南走,加入一些我自己的理解,歡迎各位看官拍磚。
參考資料:
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- 詳解vue.js組件化開發(fā)實(shí)踐
- vue.js學(xué)習(xí)之遞歸組件
- Vue.js中用v-bind綁定class的注意事項(xiàng)
- vue2.0開發(fā)實(shí)踐總結(jié)之疑難篇
- JavaScript之Vue.js【入門基礎(chǔ)】
- 詳解Vue.js——60分鐘組件快速入門(上篇)
- 深入理解vue.js雙向綁定的實(shí)現(xiàn)原理
- vue.js指令v-model實(shí)現(xiàn)方法
- Vue.js路由組件vue-router使用方法詳解
- Vue2實(shí)現(xiàn)組件props雙向綁定
- 基于vue.js實(shí)現(xiàn)圖片輪播效果
- 淺談Vue的基本應(yīng)用
相關(guān)文章
談?wù)勔騐ue.js引發(fā)關(guān)于getter和setter的思考
最近因?yàn)楣镜男马?xiàng)目決定使用Vue.js來做,但在使用的過程中發(fā)現(xiàn)了一個(gè)有趣的事情,因?yàn)榘l(fā)現(xiàn)的這個(gè)事情展開了一些對于getter和setter的思考,具體是什么下面通過這篇文章來一起看看吧,有需要的朋友們可以參考學(xué)習(xí)。2016-12-12vue.js仿hover效果的實(shí)現(xiàn)方法示例
這篇文章主要介紹了vue.js仿hover效果的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了vue.js事件響應(yīng)及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-01-01Vue3 根據(jù)路由動(dòng)態(tài)生成側(cè)邊菜單的方法
本文介紹了如何在Vue3項(xiàng)目中根據(jù)路由動(dòng)態(tài)生成側(cè)邊菜單,包括準(zhǔn)備工作、路由配置基礎(chǔ)、組件搭建和優(yōu)化與拓展,通過這些步驟,可以實(shí)現(xiàn)一個(gè)靈活且可擴(kuò)展的側(cè)邊菜單系統(tǒng),提升用戶體驗(yàn),感興趣的朋友一起看看吧2025-01-01vue項(xiàng)目運(yùn)行時(shí)出現(xiàn)It works的問題解決
本文主要介紹了vue項(xiàng)目運(yùn)行時(shí)出現(xiàn)It works的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07