Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。
Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。
Node.js 的包管理器 npm,是全球最大的開源庫生態系統。php
官網:html
下載最新版本vue
安裝,瘋狂點擊下一步,就能夠了!node
安裝完成後,打開cmd控制檯,輸入命令node -v 查看版本:webpack
C:\Users\john>node -v v10.7.0
本質上仍是JS,跑在V8引擎上的,讓JS可以和操做系統進行交互
和Python\php相似的腳本語言web
npm 是 JavaScript 世界的包管理工具,而且是 Node.js 平臺的默認包管理工具。經過 npm 能夠安裝、共享、分發代碼,管理項目依賴關係。vue-router
NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題npm
打開cmd控制檯,輸入命令npm -v 查看版本:數組
C:\Users\john>npm -v 6.1.0
相似於Python中的pip,幫助咱們解決包和包之間版本的依賴關係
npm 是 JavaScript 世界的包管理工具,而且是 Node.js 平臺的默認包管理工具。經過 npm 能夠安裝、共享、分發代碼,管理項目依賴關係。
NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題
打開cmd控制檯,輸入命令npm -v 查看版本:
C:\Users\john>npm -v 6.1.0
相似於Python中的pip,幫助咱們解決包和包之間版本的依賴關係
npm install webpack -g npm install webpack-cli -g
關閉cmd窗口,再次打開,查看版本
C:\Users\john>webpack -v 4.16.2
下圖展現了實例的生命週期。你不須要立馬弄明白全部的東西,不過隨着你的不斷學習和使用,它的參考價值會愈來愈高。
Vue的生命週期,就是從Vue實例被建立開始到實例銷燬時的過程,整個過程主要能夠分爲八個階段分別是:
以上各個階分別會有對應的「鉤子函數」以Vue實例的選項的形式存在。
Vue提供的生命週期鉤子以下:
① beforeCreate
在實例初始化以後,數據觀測(data observer,開始監控Data對象數據變化)和初始化事件(init event,Vue內部初始化事件)以前被調用。
② created
在實例已經建立完成以後被調用。實例已完成如下的配置:數據觀測(data observer),屬性和方法的運算,event事件回調。掛載階段還沒有開始,$el 屬性不可見。
③ beforeMount
在掛載開始以前被調用。相關的render函數首次被調用。實例已完成如下的配置:編譯模板,把data裏面的數據和模板生成html。注意此時尚未掛載html到頁面上。
④ mounted
在el 被新建立的 vm.$el 替換,並掛載到實例上去以後調用。實例已完成如下的配置:用上面編譯好的html內容替換el屬性指向的DOM對象。此時模板中的html渲染到了html頁面中,此時通常能夠作一些Ajax操做。注意mounted只會執行一次。
⑤ beforeUpdate
在數據更新以前調用,發生在虛擬DOM從新渲染和打補丁以前。能夠在該鉤子中進一步地更改狀態,不會觸發附加的重渲染過程。
⑥ updated
在因爲數據更改致使的虛擬DOM從新渲染和打補丁以後調用。調用時,組件DOM已經更新,因此能夠執行依賴於DOM的操做。然而在大多數狀況下,應該避免在此期間更改狀態,由於這可能會致使更新無限循環。該鉤子在服務器端渲染期間不被調用。
⑦ beforeDestroy
在實例銷燬以前調用。實例仍然徹底可用。
⑧ destroyed
在實例銷燬以後調用。調用後,全部的事件監聽器會被移除,全部的子實例也會被銷燬。該鉤子在服務器端渲染期間不被調用。
關於Vue生命週期的詳細解釋,請參考文章:
http://www.javashuo.com/article/p-gfficcpo-bg.html
這篇文章,寫的很是詳細,你們能夠觀摩一下!
若是有想作Vue開發的,vue生命週期必問。大概描述一下Vue實例被建立開始到實例銷燬時的過程,就能夠了!
中央事件總線 - 就是一個名字能夠叫作bus的vue空實例,裏邊沒有任何內容; var bus = new Vue(); 人如其名,她就像一個公交車同樣,來回輸送人,將a站點的A輸送到b站點,再將b站點的B輸送到a站點; 這裏a,b站點就像父、子組件,也像兄、弟組件,或者像兩個沒有任何親戚關係的任何組件; 而A,B就像是各個組件內部要傳輸的數據或者要執行的命令信息,靠bus來通訊。
中央事件總線 - 就是一個名字能夠叫作bus的vue空實例,裏邊沒有任何內容;
var bus = new Vue();
人如其名,她就像一個公交車同樣,來回輸送人,將a站點的A輸送到b站點,再將b站點的B輸送到a站點;
這裏a,b站點就像父、子組件,也像兄、弟組件,或者像兩個沒有任何親戚關係的任何組件;
而A,B就像是各個組件內部要傳輸的數據或者要執行的命令信息,靠bus來通訊。
若是有父子組件通訊知識基礎的,應該記得當初父子組件通訊,父組件中用$on監聽,子組件中用$emit發射。
現現在父子組件(或任何其餘關係的兩個組件之間)達成一致協議:
將監聽和發射的工做交給了bus來搞,就好像他們兩頭不自駕接送了,改乘公交了本身出發本身回家了。
那局面就是下邊這樣
$on和$emit如今綁在bus上了
bus.$emit(‘同名自定義事件名’,‘$on發送過來的數據’);
在a站點(第一個組件)中的methods方法裏,準備用bus的$emit發射事件任務。
bus.$on(‘自定義事件名’,function(){ //而後執行什麼你本身懂的。。。 });
在b站點(另外一個組件)實例初始化(mounted鉤子中)時,用bus的$on監聽自家$emit觸發的事件。
能夠再添加data、methods、computed等選項,在初始化時讓bus獲取一下,任何組件均可以公用了。就像公交車上的座位,只要有座誰都能坐。
能夠包括一些共享通用的信息:好比用戶登陸的姓名、性別、郵箱等,還有油壺受權的token等。
舉例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<component_1></component_1>
<hr>
<component_2></component_2>
</div>
<!-- 開發環境版本,包含了有幫助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var bus = new Vue(); //中央事件總線
var app = new Vue({
el: '#app',
data: {
name: 'component_1'
},
components:{ //註冊局部組件
component_1:{
//v-on 指令監聽 DOM 事件,並在觸發時運行一些 JavaScript 代碼
template: `<button v-on:click='paolu'>點我</button>`,
methods:{
paolu(){
alert(123);
bus.$emit('taopao'); //綁定到bus上
}
}
},
component_2: {
template: `<div>{{num}}</div>`,
data:function(){
return {
num: 0
}
},
mounted:function(){
// 在這個做用域中 this 指的是 component_2 組件實例
console.log(this.num);
var _this = this;
// el被掛載以後就監聽bus
bus.$on('taopao', function(){
// 在這個做用域中 this 指的是 bus
console.log(this.num); // undefined
alert('趙天柱跑路了...');
// 修改component_2組件中的num值
// 此時this是誰?是bus
// this.num += 1; // 有問題
_this.num += 1;
})
}
}
}
})
</script>
</body>
</html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <component_1></component_1> <hr> <component_2></component_2> </div> <!-- 開發環境版本,包含了有幫助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var bus = new Vue(); //中央事件總線 var app = new Vue({ el: '#app', data: { name: 'component_1' }, components:{ //註冊局部組件 component_1:{ //v-on 指令監聽 DOM 事件,並在觸發時運行一些 JavaScript 代碼 template: `<button v-on:click='paolu'>點我</button>`, methods:{ paolu(){ alert(123); bus.$emit('taopao'); //綁定到bus上 } } }, component_2: { template: `<div>{{num}}</div>`, data:function(){ return { num: 0 } }, mounted:function(){ // 在這個做用域中 this 指的是 component_2 組件實例 console.log(this.num); var _this = this; // el被掛載以後就監聽bus bus.$on('taopao', function(){ // 在這個做用域中 this 指的是 bus console.log(this.num); // undefined alert('趙天柱跑路了...'); // 修改component_2組件中的num值 // 此時this是誰?是bus // this.num += 1; // 有問題 _this.num += 1; }) } } } }) </script> </body> </html>
刷新網頁,效果以下:
、
Vue Router中文文檔
Vue全家桶:Vue + VueRouter + VueX
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構建單頁面應用變得易如反掌。包含的功能有:
用 Vue.js + Vue Router 建立單頁應用,是很是簡單的。使用 Vue.js ,咱們已經能夠經過組合組件來組成應用程序,當你要把 Vue Router 添加進來,咱們須要作的是,將組件 (components) 映射到路由 (routes),而後告訴 Vue Router 在哪裏渲染它們。下面是個基本例子:
必須先引用vue.js,再引用vue-router.js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <!--路由的入口--> <!-- 使用 router-link 組件來導航. --> <!-- 經過傳入 `to` 屬性指定連接. --> <!-- <router-link> 默認會被渲染成一個 `<a>` 標籤 --> <!--/index表示下面定義的path--> <router-link to="/index">index頁面</router-link> <router-link to="/home">home頁面</router-link> <hr> <!--路由的出口--> <!-- 路由匹配到的組件將渲染在這裏 --> <router-view></router-view> </div> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <script> //寫路由 const routeArray = [ { path:'/index', component:{ template:`<div><h1>這是index頁面</h1></div>` }, }, { path:'/home', component:{ //component表示用什麼渲染 //template 表示使用模板 template:`<div><h1>這是home頁面</h1></div>` }, } ] //生成VueRouter實例 const routerObj = new VueRouter({ //routes是關鍵字,它的值必須是一個數組 routes:routeArray }) //建立和掛載根實例,記得要經過 router 配置參數注入路由 //從而讓整個應用都有路由功能 var app = new Vue({ el:'#app', //router是關鍵字 router:routerObj //將路由實例掛載到vue實例中 }) </script> </body> </html>
刷新網頁,效果以下: