

差值表達(dá)式{{}} 存在一個(gè)問題,為了解決這個(gè)閃爍問題使用:v-cloak
1、提供樣式
<style type="text/css">
[v-cloak]{
display:none;
}
</style>
2、在差值表達(dá)式所在的標(biāo)簽中添加v-cloak指令
<div v-cloak>{{msg}}</div>
背后原理: 先通過樣式隱藏內(nèi)容,然后在內(nèi)存中進(jìn)行值的替換,替換好之后再顯示最終的結(jié)果


v-once
<div v-once>{{info}}</div>
v-once的引用場(chǎng)景:如果顯示的信息后續(xù)不再修改,可以使用v-once,可以提高性能
雙向數(shù)據(jù)綁定
用戶修改頁面中表單中輸入域的內(nèi)容,會(huì)影響數(shù)據(jù)的內(nèi)容變化
數(shù)據(jù)中的內(nèi)容變化,會(huì)影響頁面中表單數(shù)據(jù)內(nèi)容

阻止冒泡、阻止默認(rèn)行為
event.stopPropagation(); // 阻止冒泡
event.preventDefault(); // 阻止默認(rèn)行為
事件修飾符形式
<a @click.stop = "handle">跳轉(zhuǎn)</a> // 阻止冒泡
<a @click.prevent= "handle">跳轉(zhuǎn)</a> // 阻止默認(rèn)行為
<a @click.stop.prevent= "handle">跳轉(zhuǎn)</a> // 既阻止冒泡又阻止默認(rèn)行為
按鍵修飾符:回車也能觸發(fā)表單提交
按鍵修飾符:按刪除能全刪除





表單操作


自定義指令


計(jì)算屬性
需要有返回值return
計(jì)算屬性是基于data中的數(shù)據(jù)變化,如果data變化計(jì)算屬性也會(huì)跟著變


計(jì)算屬性和方法的區(qū)別

監(jiān)聽器

會(huì)一直監(jiān)聽屬性 一旦發(fā)生變化就會(huì)觸發(fā)方法,從而執(zhí)行watch業(yè)務(wù)邏輯

監(jiān)聽器處理異步,是計(jì)算屬性做不到的



過濾器

Vue生命周期



響應(yīng)式修改數(shù)組的方法
vm.$set(list, 1, 'lemon')
this.$set(list, 1, 'lemon')


監(jiān)聽器可以異步監(jiān)聽數(shù)據(jù)變化,一旦變化就會(huì)觸發(fā)綁定的函數(shù),函數(shù)中可以進(jìn)行一些業(yè)務(wù)邏輯處理

組件化開發(fā)


組件注冊(cè)、用法



駝峰式命名方式在使用的時(shí)候要轉(zhuǎn)換小寫+短橫線
<my-component></my-component>
組件間數(shù)據(jù)交互





兄弟傳值

組件插槽

具名插槽

作用域插槽

組件實(shí)例

http://m.itdecent.cn/p/3b2caf500165
1、刪除商品
子組件cart
<li @click='delEvent(item.id)'>刪除</li>
delEvent(id) { // 事件觸發(fā)
this.$event('del-li',id)
}
父組件監(jiān)聽事件
<cart @del-li="handleDel($event)'></cart> // $event接收傳遞的數(shù)據(jù)
handleDel(id) { // 監(jiān)聽
// 根據(jù)id刪除list中對(duì)應(yīng)的數(shù)據(jù)
// 找到id對(duì)應(yīng)的數(shù)據(jù)索引
// 根據(jù)索引刪除對(duì)應(yīng)數(shù)據(jù)
let index = this.list.findIndex(item=> item.id == id)
this.list.splice(index,1)
}
2、購物車數(shù)值添加和刪除
子組件cart
<a href='' @click.prevent='sub(item.id)'> -</a>
<input type="text" class="num" :value="item.num" @blur="changeNum(item.id, $event)"/>
<a href="" @click.prevent='add(item.id)'>+</a>
changeNum(id,event) { // $event事件input對(duì)象,可以通過$event.target.value獲取輸入的值
this.$emit('change-num', {
id: id,
type: 'change',
num: event.target.value
})
},
sub(id) {
this.$emit('change-num',{
id: id,
type: 'sub'
})
},
add(id) {
this.$emit('change-num',{
id: id,
type: 'add'
})
}
父組件監(jiān)聽事件
**父組件監(jiān)聽事件**
<cart @del-li="handleDel($event)' @change-num='handlechangeNum($event)'></cart> // $event接收傳遞的數(shù)
handlechangeNum(val) {
// 根據(jù)子組件傳遞過來的數(shù)據(jù),更新list中對(duì)應(yīng)的數(shù)據(jù)
if(val.type == 'change') {
this.list.some(item=>{
if (item.id == val.id) {
item.num = val.num
return true; // 終止遍歷
}
})
}else if (val.type='sub') {
this.list.some(item=>{
if (item.id == val.id) {
item.num -=1;
return true; // 終止遍歷
}
})
}else if (val.type=='add') {
this.list.some(item=>{
if (item.id == val.id) {
item.num +=1;
return true; // 終止遍歷
}
})
}
}
restful形式的url

基于promise發(fā)送Ajax請(qǐng)求





vue-router路由


應(yīng)用:

路由組件傳遞參數(shù)
法1:



命名路由

路由跳轉(zhuǎn)


Fetch


get請(qǐng)求方式

post請(qǐng)求方式


put請(qǐng)求方式




Axios

返回




babel

ES6 按需導(dǎo)入導(dǎo)出、默認(rèn)導(dǎo)入導(dǎo)出=》 import和export



webpack

快速初始化一個(gè)包管理配置文件



運(yùn)行index.html報(bào)錯(cuò),需要安裝配置webpack 構(gòu)建工具,使瀏覽器支持js


webpack配置打包入口與出口

webpack自動(dòng)打包

html-webpack-plugin插件 運(yùn)行l(wèi)ocalhost:8080即可運(yùn)行項(xiàng)目index.html文件

webpack打包運(yùn)行完成后自動(dòng)運(yùn)行瀏覽器
"dev": "webpack-dev-server --open", 即可

css文件loader

less文件loader

scss、sass文件loader

postcss自動(dòng)添加css兼容前綴(瀏覽器兼容前綴)

圖片、文字文件loader

打包處理高級(jí)js語法(如類)

配置vue組件的加載器

