vue變量
所有的 vue變量 ,必須在data:中有注冊(哪怕内容是空,相當于聲明這個是變量,是vue變量而不是js變量)。這裡的變量也可以運算。(注意:所有的架構一定要注意js變量和架構的變量,js變量和架構的變量是可以互相轉換,擷取的。架構的變量有這個架構變量的定義方法,如東信公司的DD變量的定義;如vue變量必須在data中定義(注冊)或者methods(方法注冊的地方))
vue函數
所有的方法事件函數,必須在methods中。methods中函數的 this指向vm,擷取data中的值可以直接 this.name獲得和修改。
其它的地方在執行個體建立之前(如生命周期beforeCreate函數中,全局中)擷取data的值,必須指明對象,vm.name 擷取。
vue中可以調用外面全局的方法,外面全局環境中也可以調用vue中的方法,使用vm.fun。(這樣就解決了,vue中不能jQuery操作DOM的問題了)
資料綁定方法
參考 https://www.cnblogs.com/fly_dragon/p/6218675.html
1、文本資料:
1、 {{ }}方法 : eg:<span>Hello {{ name }}</span>
2、v-html 指令 : 如果是标簽内所有的文本
2、屬性綁定: 文法 <标簽 v-bind:屬性名="要綁定的Vue對象的data裡的屬性名"></标簽>
<标簽 v-bind:屬性名="要綁定的Vue對象的data裡的屬性名"></标簽>
指令中綁定的資料,不能使用 {{ }}方法,直接填
data裡的屬性名就可以了。
注意:
v-bind:value綁定的表單的值,不能雙向資料綁定,v-model可以。
3、class屬性:(class和style是多屬性值屬性,是以vue除了上面的文法,又另外做了處理)
1、綁定樣式對象 :
代碼:
<div v-bind:class="{ active: isActive }"></div>
解釋:
當 isActive為 true時, div就會具有了active樣式類,如果 isActive為false,那麼div就去掉active樣式類。
直接在html屬性中的雙引号内寫對象,還是很不爽,也沒有智能提示,很容易寫錯。 Vue可以讓我們直接把綁定的class字元串指向data的一個對象,這樣就非常友善了,
既可以有智能提示,又可以很複雜進行編輯,不用擔心煩人的""了。
<div id="app">
<div class="static"
v-bind:class="classObject">
</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
classObject: {
active: true,
'text-danger': false
}
}
});
</script>
2、綁定樣式數組 :
<div v-bind:class="[activeClass, errorClass]">
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
3、style屬性
CSS屬性名可以用駝峰式(camelCase)或短橫分隔命名(kebab-case)
<div v-bind:style="{fontSize: size + 'px', backgroundColor: bgcolor, width: width}">
var app = new Vue({
el: '#app',
data: {
size: 19,
width: 200,
bgcolor: 'red'
}
});
4、表單選中值的綁定用 v-model ,比如select标簽選中的值是什麼和v-model綁定
5、v-model是雙向資料綁定,v-bind是單向的資料綁定。下面兩個是等效的
參考 詳解 v-model : https://www.jianshu.com/p/4147d3ed2e60
<input v-model="sth" />
<input v-bind:value="sth" v-on:input="sth = $event.target.value" />
6、v-model綁定的不一定是表單的value屬性值(一般都是value屬性值,Radio和Checkbox有所不同),
如:單選Checkbox中v-model綁定的是checked屬性值,原生标簽中隻要就這個屬性有就是被選中的。用vue通過v-model綁定的變量就可以知道是不是選中。
參考 : https://www.cnblogs.com/dyfbk/p/6868350.html
計算屬性 computed :https://www.cnblogs.com/gunelark/p/8492468.html
總結:計算屬性 預設隻有getter,不過在需要時你也可以提供一個setter (setter 是反過來執行的函數,當計算屬性值被改變,執行setter 函數)
computed: {
totle: {
set (val) { // totle 值的改變會觸發這裡的函數。但是下get函數引起的totle改變除外
console.log('set')
this.msg += 'dfd' // 這裡msg改變會引起get函數的執行。隻要get函數中使用到的vue資料發生變化都會觸發get函數的執行。
},
get () { // 這裡引起的 totle 值改變,不會觸發set裡面的函數。
console.log('get') // 正式開發,這裡是不推薦有其他業務代碼的,隻有一個 return資料
return this.msg + this.tt
}
}
}
清單渲染
1、清單渲染中的 vue 變量,凡不是一 object.name 形式的變量,渲染出來的結果是一樣的。是以如果每一列可能不同的,都必須轉化為object.name形式的變量。
2、vue循環渲染可以和條件渲染結合起來使用的
事件綁定
綁定一個事件
<button v-on:click="say">Say</button>
綁定多個事件
<div v-on:click="sayFrom('first')" v-on:click ="sayFrom('second)">
有修飾符的綁定事件
<a v-on:click.stop='doThis'></a>
vue.js移除綁定的點選事件 : https://blog.csdn.net/tsingsn/article/details/77196167
過濾器
在vue2.0裡 管道符‘ | '隻能用在 mousetache(插值) 和 v-bind 中。(v-model的資料怎麼使用過濾器還不清楚)
vue裡面的vue變量名和方法名還有過濾器名字都不能相同,全局作用域中都可以通過vue對象直接擷取到。
new Vue({
el: '#app',
data: {
},
filters: {
capitalize: function (value) {
return value.charAt(0).toUpperCase() + value.slice(1);
}
}
});
Vue2.0裡過濾器容易踩到的坑 : https://blog.csdn.net/sinat_36555135/article/details/70678478
常用生命周期
執行個體生命周期鈎子(微信小程式架構和它類似) : 可以把周期鈎子 看做 不同時期的人口函數
參考 : https://cn.vuejs.org/v2/guide/instance.html#執行個體生命周期鈎子 或 https://segmentfault.com/a/1190000008010666
常用的生命周期有:
1、beforeCreate (2.0版本前叫 init) : 在執行個體開始初始化時同步調用。此時資料觀測、事件等都尚未初始化。
2、mounted (2.0版本前叫 ready) : 在編譯結束和$el第一次插入文檔之後調用
vue生命周期中執行函數不可出現vue對象(如vm,vm = new Vue()),因為在 new Vue()過程還沒有完成vm的指派(此時的vm是undefined),是以此時内部執行語句出現 vm ,變量就會報錯。
3、
destroyed :在執行個體被銷毀之後調用。單頁面用中頁面跳轉時元件頁面就會被銷毀。定時器的功能相當于另外開了一個程序,vue元件銷毀,并不能結束定時器的程式。需要手動清除定時器,一般都是在銷毀的生命周期中執行。
watch 監聽資料變化
參考 : https://blog.csdn.net/lemon_zhao/article/details/52191527
注意:watch中監聽的資料的事件函數,如果是methods中的方法,隻能使用字元串,這裡不能使用vm.fun對象擷取。
v-bind綁定的資料,視圖改變不一定使vue變量同步改變,是以不會觸發watch中的函數。
new Vue({
el: '#app',
data: {
name: ""
},
methods: {
queryTrendData: function() {
}
},
watch: {
'name': 'queryTrendData',
}
});
路由 插件(Vue-router): https://router.vuejs.org/zh/api/#router-link
1、
<router-link>
元件
2、
<router-view>
元件
vuex 狀态管理
1、為什麼使用vuex : https://www.cnblogs.com/goloving/p/9080005.html
vuex的功能 和 localstorage 的作用是一樣,把資料在一個所有頁面都可以存取的地方。但是vuex的資料具有響應式(類似資料雙向綁定),而 localstorage 的資料是固定的,必須手動設定。
2、使用方法: https://www.cnblogs.com/first-time/p/6815036.html 或 https://www.cnblogs.com/liningstyle/p/8335129.html (推薦這個,比較清晰)
簡單使用 :
1、擷取state 資料 :
<
p
>{{$store.state.count}}</
p
> 或
<
p
>{{$store.state.Heade.count}}</
p
>(使用了modules對象管理)
2、設定state 資料 (mutations 設定,所有的資料同步改變): 設定 state 的資料,需要用到 Store 對象的 mutations 選項中的函數實作。在頁面中改變 state 的資料,是通過執行 mutations 對應的方法去改變的。
<a href="javascript:;"@click="$store.commit('Count',10)">click</a> // 這裡 Count 是 mutations 對象下的函數
3、設定state 資料 (actions 設定,解決上邊所有資料同步改變)
<a href="javascript:;" @click="$store.dispatch('Acount')">click</a>
關于vue中的$符号總結一下
參考 : https://blog.csdn.net/m_oman/article/details/80412877 或 https://cn.vuejs.org/v2/api/#%E5%AE%9E%E4%BE%8B%E5%B1%9E%E6%80%A7
注:合理的使用vue是不應該和jQuery一起使用的。
vue使用知識總結:
1、router-link 介紹 : https://blog.csdn.net/tanga842428/article/details/53052970
2、(猜測)模闆是挂載在 錨點元素上的;元件隻能放在模闆中。
3、帶參數的路由跳轉(主要是通過點選事件,觸發路由跳轉函數) : https://blog.csdn.net/kuangshp128/article/details/77280799 或 https://www.cnblogs.com/crazycode2/p/7685424.html (推薦)
<div class="take_person clearfix" @click="goPage('/personList','2')">點選</div>
goPage (url, id, userId) { // url 是 路由位址,後面的參數都是需要現代的資料
this.$router.push({
path: url,
query: {
id: id,
userId: userId
}
})
}
4、(個人體會)前端的開發解耦性對于後期的維護很友善,思路也比較清晰。是以vue的開發,個人以為好的代碼規法如下:
a、把調接口的接口都放在一個js檔案,封裝到對應的函數中,這個js檔案,隻是配置好url。
// 訂單詳情查詢
export function getOrderDetail (obj) {
const url = STAGE_BASE_URL + 'hzeg-order-service/od/getOrderDetail'
return axios.get(url, {
params: obj
}).then((res) => {
return Promise.resolve(res.data)
})
}
b、調用這個接口的函數,放到vue的 methods 中的函數中,再次封裝。
c、vue周期函數,隻負責程式流程(即隻是調用相應的方法,執行程式),不寫程式實作。
5、vue前端面試題 : https://www.cnblogs.com/sichaoyun/p/8406194.html 或 https://baijiahao.baidu.com/s?id=1612362349849989689&wfr=spider&for=pc
轉載于:https://www.cnblogs.com/wfblog/p/9183888.html