vue的中文文檔在這裏javascript
使用vue框架最簡單的方式就是寫一個HTML頁面而後引用vue.js啦. 使用<script>
標籤就能夠將vue.js導入而且使用它來構建vue app了.html
這種方法是官方建議的, 像我這種新手固然也是使用這種方案的啦.vue
相關連接java
{{}}
雙大括號綁定內容(相似於innerHtml
)v-bind
綁定屬性 (el: v-bind:style="variable"
)v-on
綁定事件 (el: v-on:click="onClick"
)v-if
條件渲染 (el: v-if="bool"
) <ul id="example"> <li v-for="(item, index) in items">{{ index }} - {{ item.message }} </li> </ul>
v-model
輸入數據綁定 node
<input v-model="model"> <p>Message is: {{ model }}</p>
若是要使用vue的」插值語法」和vue的種種api, 則必須在HTML的js代碼中創建vue實例.
模板以下:webpack
var app = new Vue({ el: '#app', //vue實例的承載元素 data: {}, //數據 method: {}, //方法 computed: {}, //計算屬性. 當插值時使用的數據須要過於繁瑣的計算時, 使用計算屬性. /* 生命週期鉤子, 詳見vue的文檔 */ });
生命週期函數鉤子web
vue-cli是個node的模塊, 因此想要使用vue-cli, 首先須要配置node運行環境, 而後再使用npm安裝vue-cli.vue-cli
vue init webpack project-name
npm install --sava
vue run dev
webpack
<template> <!--HTML代碼--> </template> <script> //Javascript代碼 </script> <style scoped> //CSS代碼, 使用scoped屬性能將這段style代碼限制在此組件內部而不會影響外部 </style>
在node中, 一個js文件就是一個模塊, 使用 import
導入模塊而使用 export
導出模塊. 在vue中, 一個vue文件即包含了這個組件的view和controller, 而對於javascript來講, 這個vue文件就是一個js模塊. 所以, 應該使用export
導出這個組件的對象實例, 這樣才能在外部導入這個組件.
構造一個對象的實例和構造一個vue實例是相似的, 都 須要指定html中的"承載元素"和 data等等屬性.npm
export default { el:'#component', data: function(){ return somedData; //注意, 一個組件的data應該是一個函數對象而且使用return返回data對象 } method: function(){} //somefunction }
父組件->子組件 api
父組件傳數據給子組件須要兩步操做
//子組件: <template> <div> <div>{{someText}}</div> <div v-bind:style="{color : colorCode}">This font-color should be setted by parent</div> </div> </template> <script> export default { data(){ return { someText: "text" } } props: { colorCode: String //使用props聲明子組件須要的數據(屬性), msg是屬性的"name", String用來指定msg值的類型 } } </script> //父組件: <template> <div> <child v-bind:colorCode="#00aaff"></child> </div> </template> <script> export default { data: ()=>{}, component:{ child: require('componenets/child.vue') } } </script>
子組件->父組件
子組件傳遞數據給父組件能夠有多種操做.
子組件捕獲事件, 子組件處理
父組件捕獲事件, 父組件處理
子組件捕獲事件, 父組件處理
父組件捕獲事件, 子組件處理
前兩種的事件處理直接在script裏將事件」消費」掉便可; 然後兩種則須要使用不一樣的方式分別處理.
- 子組件到父組件
使用」事件發射器(emit)」, 子組件捕獲事件並將其」發射」給父組件, 由父組件處理
- 父組件到子組件
在 vue 1 中, 有 dispatch() 和 broadcast() 將父組件的事件分發給子組件, 而在 vue 2 中, 上述兩個方法已經被棄用, 取而代之的是狀態管理層Vuex. 詳見
//子組件 <template> <div> <input type="text" v-model="msg" v-on:change="onInput"> </div> </template> <script> export default{ data(){ return { msg: '請輸入值' } }, methods: { onInput: function () { if (this.msg.trim()) { this.$emit('customedEvent', this.msg); //第一個參數是"發射"給父組件的事件名稱, 第二個參數是事件的附加參數. } } } } </script> //父組件 <template> <div> <child v-on:customedEvent="recieveMessage"></child> </div> </template> <script> export default{ components: { child: require('components/child.vue'), }, methods: { recieveMessage: function (text) { alert(text); } } } </script>
1. 每個組件的最外層只能有一個根元素(template不是一個元素)