Vue.js 2.0 快速上手精華梳理

自從Vue2.0發佈後,Vue就成了前端領域的熱門話題,github也突破了三萬的star,那麼對於新手來講,如何高效快速的學習Vue2.0呢。css

Vue基礎

對於沒有接觸過es6和webpack的童鞋來講,不建議直接用官方的腳手架vue-cli構件項目。
先按文檔順序最少學習完組件那一章。直接在html文件中引入vue.js開始學習,瞭解vue的基礎指令,和整個vue實例的基礎架構。
vue的生命週期很重要,瞭解這點之後能夠免去不少問題。
學完這些能夠作一些練手的小項目,好比萬年不變的todolist。。。
如今能夠開始學習使用vue-cli構件項目了,學習組件化以前,推薦先看一下es6關於模塊的介紹。阮一峯《ECMAScript6》 Module
光會這些仍是不夠的,還得會一些npm基礎,知道如何用git-bush來安裝模塊依賴,會一些經常使用的命令。這方面的知識能夠參閱npm入門文檔
看完這些就能夠試着將以前的寫的demo用搭建的vue-cli來實現。附上我寫的一個入門小demovue-demo-search
多看看組件那裏,看看如何在vue-cli中怎麼實現組件化。
到這裏vue基礎篇就結束了。你還能夠有條件的參閱剩下的官方文檔裏面的進階篇,若是時間有限,就直接進入vue-routerhtml

Vue-router

和以前同樣,推薦直接用html+js過一遍文檔
對路由導航鉤子得好好看一看。
看完文檔就能夠上手vue-cli,通常新手在這幾天都會死活跑不出來。偷笑
最直接的方法就是去github上搜一些關於vue-router2.0的demo,看如何構件路由,如何構件項目目錄。
我這裏有一個傳送門
若是能跑出來,就能夠作一些小項目了,好比寫一個知乎日報啊偷笑,這些demo在github上不少。
能夠結合一些組件庫寫demo,這樣能夠更加了解組件化。好比餓了麼團隊的Element、mint-ui前端

Vuex

什麼是vuex?
Vuex 是一個專門爲 Vue.js 應用設計的 狀態管理模型 + 庫。它爲應用內的全部組件提供集中式存儲服務,其中的規則確保狀態只能按預期方式變動。說白了就是控制應用的一些全局狀態。狀態改變了,對應的視圖也會改變。vue

在學習Vuex時,會有一些ES6特性,當遇到這些時,最好不要一帶而過,去好好看一看這些es6特性。
好比在學習Action時能夠看看ES6新增的Promise和參數解構。
實踐的方法同樣是先看別人別人寫的代碼,好比官方的購物車實例的應用結構
把以前寫的demo優化一下,有些地方能夠用用vuex
vuex主要是用來對不一樣組件間進行通訊,它構建了一個Vue實例的全局數據與方法,這些數據與方法能夠在該Vue實例的全部組件中get與setnode

入門到放棄整理

1、vue基礎

Vue2.0最全文檔
Vue2.0 探索之路——vue-router入門教程和總結
Vue.js 2.0 快速上手
Vuejs2.0 文檔攻略
「Vue2.0」跟俺一塊兒全面入坑 01
「Vue2.0」跟俺一塊兒全面入坑 02
「Vue2.0」跟俺一塊兒全面入坑 03
「Vue2.0」跟俺一塊兒全面入坑 —— 自定義便籤
超好用的VueJs調試工具——vue-devtools
Vue2.0史上最全入坑教程(上)—— 搭建Vue腳手架(vue-cli)
Vue2.0史上最全入坑教程(中)—— 腳手架代碼詳解
Vue2.0史上最全入坑教程(下)—— 實戰案例
Vue2.0史上最全入坑教程(完)—— 實戰案例
vue-cli中配置sass和利用SASS函數功能實現px轉remwebpack

2、vue提升

Vue路由跳轉問題記錄詳解
vuejs心法和技法
Vue2.0生命週期和鉤子函數的一些理解 ===》推薦
用webpack(2.x語法)手動搭建Vue項目
全面解析vue-cli生成的項目中使用其餘庫(js庫、css庫)
Vuex從入門到熟練使用
vue與服務端通訊—vue-resource
vue開發過程當中跨域最簡單解決方案
富文本編輯器Ueditor如何在Vue中使用?git

3、vue 1.x和vue 2.x的區別

到了Vue2.x有哪些變化?—— 知識點
到了Vue2.x有哪些變化?—— 組件通訊es6

4、其餘必備知識點

ES6入門(一)
ES6快速入門(二)
ES6快速入門(三)github

須要視頻教程的關注公衆號[代碼技巧](ID:daimajiqiao)回覆 14 便可獲取,付出總會有收穫

Vue.js2.0核心思想

Vue.js是一個提供MVVM數據雙向綁定的庫,專一於UI層面,核心思想是:數據驅動、組件系統。web

數據驅動:

Vue.js數據觀測原理在技術實現上,利用的是ES5Object.defineProperty和存儲器屬性: getter和setter(因此只兼容IE9及以上版本),可稱爲基於依賴收集的觀測機制。核心是VM,即ViewModel,保證數據和視圖的一致性。

watcher:每個指令都會有一個對應的用來觀測數據的對象,叫作watcher,好比v-text="msg", {{ msg }},即爲兩個watcher,watcher對象中包含了待渲染的關聯DOM元素。

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})複製代碼

基於依賴收集的觀測機制原理:

1 將原生的數據改形成 「可觀察對象」,一般爲,調用defineProperty改變data對象中數據爲存儲器屬性。一個可觀察對象能夠被取值getter,也能夠被賦值setter。
2 在解析模板,也就是在watcher的求值過程當中,每個被取值的可觀察對象都會將當前的watcher註冊爲本身的一個訂閱者,併成爲當前watcher的一個依賴。
3 當一個被依賴的可觀察對象被賦值時,它會通知notify全部訂閱本身的watcher從新求值,並觸發相應的更新,即watcher對象中關聯的DOM改變渲染。
依賴收集的優勢在於能夠精確、主動地追蹤數據的變化,不須要手動觸發或對做用域中全部watcher都求值(angular髒檢查實現方式的缺點)。特殊的是,對於數組,須要經過包裹數組的可變方法(好比push)來監聽數組的變化。在添加/刪除屬性,或是修改數組特定位置元素時,也須要調用特定的函數,如obj.$add(key, value)才能觸發更新。這是受ES5的語言特性所限。

組件系統:

應用類UI能夠看做所有是由組件樹構成的。

註冊一個組件:

Vue.component('my-component', {
    // 模板
    template: '<div>{{msg}} {{privateMsg}}</div>',
    // 接受參數
    props: {
        msg: String    
    },
    // 私有數據,須要在函數中返回以免多個實例共享一個對象
    data: function () {
        return {
            privateMsg: 'component!'
        }
    }
})
<my-component msg="hello"></my-component>複製代碼

組件的核心選項

1 模板(template):模板聲明瞭數據和最終展示給用戶的DOM之間的映射關係。
2 初始數據(data):一個組件的初始數據狀態。對於可複用的組件來講,這一般是私有的狀態。
3 接受的外部參數(props):組件之間經過參數來進行數據的傳遞和共享。
4 方法(methods):對數據的改動操做通常都在組件的方法內進行。
5 生命週期鉤子函數(lifecycle hooks):一個組件會觸發多個生命週期鉤子函數,最新2.0版本對於生命週期函數名稱改動很大。
6 私有資源(assets):Vue.js當中將用戶自定義的指令、過濾器、組件等統稱爲資源。一個組件能夠聲明本身的私有資源。私有資源只有該組件和它的子組件能夠調用。
Webpack是一個開源的前端模塊構建工具,它提供了強大的loader API來定義對不一樣文件格式的預處理邏輯,這是.vue後綴單文件組件形式的基礎。因此在此基礎上,尤大開發的vue-loader容許將模板、樣式、邏輯三要素整合在同一個文件中,以.vue文件後綴造成單文件組件格式,方便項目架構和開發引用。

其餘特性:

1 異步批量DOM更新:當大量數據變更時,全部受到影響的watcher會被推送到一個隊列中,而且每一個watcher只會推動隊列一次。這個隊列會在進程的下一個 tick異步執行。這個機制能夠避免同一個數據屢次變更產生的多餘DOM操做,也能夠保證全部的DOM寫操做在一塊兒執行,避免DOM讀寫切換可能致使的layout。
2 動畫系統:Vue.js提供了簡單卻強大的動畫系統,當一個元素的可見性變化時,用戶不只能夠很簡單地定義對應的CSS Transition或Animation效果,還能夠利用豐富的JavaScript鉤子函數進行更底層的動畫處理。
3 可擴展性:除了自定義指令、過濾器和組件,Vue.js還提供了靈活的mixin機制,讓用戶能夠在多個組件中複用共同的特性。

Node與Angular與Vue.js視頻教程須要視頻教程的關注公衆號[代碼技巧](ID:daimajiqiao)回覆 14 便可獲取,付出總會有收穫

最後建議Vue 2.0 的學習順序

起步

  1. 紮實的 JavaScript / HTML / CSS 基本功。這是前置條件。

  2. 通讀官方教程 (guide) 的基礎篇。不要用任何構建工具,就只用最簡單的 script,把教程裏的例子模仿一遍,理解用法。不推薦上來就直接用 vue-cli 構建項目,尤爲是若是沒有 Node/Webpack 基礎。

  3. 照着官網上的示例,本身想一些相似的例子,模仿着實現來練手,加深理解。

  4. 閱讀官方教程進階篇的前半部分,到『自定義指令 (Custom Directive) 』爲止。着重理解 Vue 的響應式機制和組件生命週期。『渲染函數(Render Function)』若是理解吃力能夠先跳過。

  5. 閱讀教程裏關於路由和狀態管理的章節,而後根據須要學習 vue-router 和 vuex。一樣的,先不要管構建工具,以跟着文檔裏的例子理解用法爲主。

  1. 走完基礎文檔後,若是你對於基於 Node 的前端工程化不熟悉,就須要補課了。下面這些嚴格來講並非 Vue 自己的內容,也不涵蓋全部的前端工程化知識,但對於大型的 Vue 工程是前置條件,也是合格的『前端工程師』應當具有的知識。

前端生態/工程化

  1. 瞭解 JavaScript 背後的規範,ECMAScript 的歷史和目前的規範制定方式。學習 ES2015/16 的新特性,理解 ES2015 modules,適當關注還未成爲標準的提案。

  2. 學習命令行的使用。建議用 Mac。

  3. 學習 Node.js 基礎。建議使用 nvm 這樣的工具來管理機器上的 Node 版本,而且將 npm 的 registry 註冊表配置爲淘寶的鏡像源。至少要了解 npm 的經常使用命令,npm scripts 如何使用,語義化版本號規則,CommonJS 模塊規範(瞭解它和 ES2015 Modules 的異同),Node 包的解析規則,以及 Node 的經常使用 API。應當作到能夠本身寫一些基本的命令行程序。注意最新版本的 Node (6+) 已經支持絕大部分 ES2015 的特性,能夠藉此鞏固 ES2015。

  4. 瞭解如何使用 / 配置 Babel 來將 ES2015 編譯到 ES5 用於瀏覽器環境。

  5. 學習 Webpack。Webpack 是一個極其強大同時也複雜的工具,做爲起步,理解它的『一切皆模塊』的思想,並基本瞭解其經常使用配置選項和 loader 的概念/使用方法便可,好比如何搭配 Webpack 使用 Babel。學習 Webpack 的一個挑戰在於其自己文檔的混亂,建議多搜索搜索,應該仍是有質量不錯的第三方教程的。英文好的建議閱讀 Webpack 2.0 的文檔,比起 1.0 有極大的改善,但須要注意和 1.0 的不兼容之處。

Vue 進階

  1. 有了 Node 和 Webpack 的基礎,能夠經過 vue-cli 來搭建基於 Webpack ,而且支持單文件組件的項目了。建議用 webpack-simple 這個模板開始,並閱讀官方教程進階篇剩餘的內容以及 vue-loader 的文檔,瞭解一些進階配置。有興趣的能夠本身親手從零開始搭一個項目加深理解。

  2. 根據 例子 嘗試在 Webpack 模板基礎上整合 vue-router 和 vuex

  3. 深刻理解 Virtual DOM 和『渲染函數 (Render Functions)』這一章節(可選擇性使用 JSX),理解模板和渲染函數之間的對應關係,瞭解其使用方法和適用場景。

  4. (可選)根據需求,瞭解服務端渲染的使用(須要配合 Node 服務器開發的知識)。其實更重要的是理解它所解決的問題並搞清楚你是否須要它。

  5. 閱讀開源的 Vue 應用、組件、插件源碼,本身嘗試編寫開源的 Vue 組件、插件。

相關文章
相關標籤/搜索