用來建立vue項目的工具包vue
建立項目:webpack
npm install -g vue-cliios
vue init webpack VueDemoweb
開發環境運行:ajax
cd VueDemovue-router
npm installvuex
npm run devvue-cli
生產環境打包發佈npm
npm run build編程
npm install -g serve
serve dist
用來作項目編碼規範檢查的工具
基本原理: 定義了不少規則, 檢查項目的代碼一旦發現違背了某個規則就輸出相應的提示信息
有相應的配置, 可定製檢查
vue文件包含3個部分
<template>
<div></div>
</template>
<script> export default { props: []/{} data(){}, computed: {} methods: {}, watch: {} filters: {} directives: {} components: {} } </script>
<style> </style>
組件化編碼的基本流程
1). 拆分界面, 抽取組件
2). 編寫靜態組件
3). 編寫動態組件
初始化數據, 動態顯示初始化界面
實現與用戶交互功能
組件通訊的5種方式
props
vue的自定義事件
pubsub第三方庫
slot
vuex(後面單獨講)
props:
父子組件間通訊的基本方式
屬性值的2大類型:
通常: 父組件-->子組件
函數: 子組件-->父組件
隔層組件間傳遞: 必須逐層傳遞(麻煩)
兄弟組件間: 必須藉助父組件(麻煩)
vue自定義事件
子組件與父組件的通訊方式
用來取代function props
不適合隔層組件和兄弟組件間的通訊
pubsub第三方庫(消息訂閱與發佈)
適合於任何關係的組件間通訊
slot
通訊是帶數據的標籤
注意: 標籤是在父組件中解析
vuex
多組件共享狀態(數據的管理)
組件間的關係也沒有限制
功能比pubsub強大, 更適用於vue項目
相關庫:
vue-resource: vue插件, 多用於vue1.x
axios: 第三方庫, 多用於vue2.x
vue-resource使用
// 引入模塊
import VueResource from 'vue-resource'
// 使用插件
Vue.use(VueResource)
// 經過vue/組件對象發送ajax請求
this.$http.get('/someUrl').then((response) => {
// success callback
console.log(response.data) //返回結果數據
}, (response) => {
// error callback
console.log(response.statusText) //錯誤信息
})
axios使用
// 引入模塊
import axios from 'axios'
// 發送ajax請求
axios.get(url)
.then(response => {
console.log(response.data) // 獲得返回結果數據
})
.catch(error => {
console.log(error.message)
})
vue用來實現SPA的插件
使用vue-router
new VueRouter({
routes: [
{ // 通常路由
path: '/about',
component: about
},
{ // 自動跳轉路由
path: '/',
redirect: '/about'
}
]
})
import router from './router'
new Vue({
router
})
<router-link to="/xxx">Go to XXX</router-link>
<router-view></router-view>
編寫路由的3步
定義路由組件
映射路由
編寫路由2個標籤
嵌套路由
children: [
{
path: '/home/news',
component: news
},
{
path: 'message',
component: message
}
]
向路由組件傳遞數據
params: <router-link to="/home/news/abc/123">
props: <router-view msg='abc'>
緩存路由組件
<keep-alive>
<router-view></router-view>
</keep-alive>
路由的編程式導航
this.$router.push(path): 至關於點擊路由連接(能夠返回到當前路由界面)
this.$router.replace(path): 用新路由替換當前路由(不能夠返回到當前路由界面)
this.$router.back(): 請求(返回)上一個記錄路由