Vue過(guò)濾器,生命周期函數(shù)和vue-resource簡(jiǎn)單介紹
一、過(guò)濾器
使用例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> //把msg的內(nèi)容的abc替換成'你好123',最后添加上'========' <p>{{ msg | msgFormat('你好', '123') | test }}</p> </div> <script> // 定義一個(gè) Vue 全局的過(guò)濾器,名字叫做 msgFormat Vue.filter('msgFormat', function (msg, arg, arg2) { // 字符串的 replace 方法,第一個(gè)參數(shù),除了可寫(xiě)一個(gè) 字符串之外,還可以定義一個(gè)正則 return msg.replace(/abc/g, arg + arg2) }) Vue.filter('test', function (msg) { return msg + '========' }) // 創(chuàng)建 Vue 實(shí)例,得到 ViewModel var vm = new Vue({ el: '#app', data: { msg: 'abc,abcdefg,哈哈哈' }, methods: {} }); </script> </body> </html>
二、vue的生命周期函數(shù)
1、什么是生命周期
從Vue實(shí)例創(chuàng)建、運(yùn)行、到銷(xiāo)毀期間,總是伴隨著各種各樣的事件,這些事件,統(tǒng)稱(chēng)為生命周期
2、主要的生命周期函數(shù)分類(lèi)
1、創(chuàng)建期間的生命周期函數(shù):
beforeCreate:實(shí)例剛在內(nèi)存中被創(chuàng)建出來(lái),此時(shí),還沒(méi)有初始化好 data 和 methods 屬性
created:實(shí)例已經(jīng)在內(nèi)存中創(chuàng)建OK,此時(shí) data 和 methods 已經(jīng)創(chuàng)建OK,此時(shí)還沒(méi)有開(kāi)始 編譯模板
beforeMount:此時(shí)已經(jīng)完成了模板的編譯,但是還沒(méi)有掛載到頁(yè)面中
mounted:此時(shí),已經(jīng)將編譯好的模板,掛載到了頁(yè)面指定的容器中顯示
2、運(yùn)行期間的生命周期函數(shù):
beforeUpdate:狀態(tài)更新之前執(zhí)行此函數(shù), 此時(shí) data 中的狀態(tài)值是最新的,但是界面上顯示的 數(shù)據(jù)還是舊的,因?yàn)榇藭r(shí)還沒(méi)有開(kāi)始重新渲染DOM節(jié)點(diǎn)
updated:實(shí)例更新完畢之后調(diào)用此函數(shù),此時(shí) data 中的狀態(tài)值 和 界面上顯示的數(shù)據(jù),都已經(jīng)完成了更新,界面已經(jīng)被重新渲染好了!
3、銷(xiāo)毀期間的生命周期函數(shù):
beforeDestroy:實(shí)例銷(xiāo)毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。
destroyed:Vue 實(shí)例銷(xiāo)毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)例也會(huì)被銷(xiāo)毀。
使用例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <input type="button" value="修改msg" @click="msg='No'"> <h3 id="h3">{{ msg }}</h3> </div> <script> var vm = new Vue({ el: '#app', data: { msg: 'ok' }, methods: { show() { console.log('執(zhí)行了show方法') } }, beforeCreate() { alert('beforeCreate1') //this.show() // 注意: 在 beforeCreate 生命周期函數(shù)執(zhí)行的時(shí)候,data 和 methods 中的 數(shù)據(jù)都還沒(méi)有沒(méi)初始化 }, created() { // 這是遇到的第二個(gè)生命周期函數(shù) alert('created2') // this.show() // 在 created 中,data 和 methods 都已經(jīng)被初始化好了! // 如果要調(diào)用 methods 中的方法,或者操作 data 中的數(shù)據(jù),最早,只能在 created 中操作 }, beforeMount() { // 這是遇到的第3個(gè)生命周期函數(shù),表示 模板已經(jīng)在內(nèi)存中編輯完成了,但是尚未把 模板渲染到 頁(yè)面中 alert('beforeMount3') // 在 beforeMount 執(zhí)行的時(shí)候,頁(yè)面中的元素,還沒(méi)有被真正替換過(guò)來(lái),只是之前寫(xiě)的一些模板字符串 }, mounted() { // 這是遇到的第4個(gè)生命周期函數(shù),表示,內(nèi)存中的模板,已經(jīng)真實(shí)的掛載到了頁(yè)面中,用戶(hù)已經(jīng)可以看到渲染好的頁(yè)面了 alert('mounted4') // 注意: mounted 是 實(shí)例創(chuàng)建期間的最后一個(gè)生命周期函數(shù),當(dāng)執(zhí)行完 mounted 就表示,實(shí)例已經(jīng)被完全創(chuàng)建好了,此時(shí),如果沒(méi)有其它操作的話,這個(gè)實(shí)例,就靜靜的 躺在我們的內(nèi)存中,一動(dòng)不動(dòng) }, // 接下來(lái)的是運(yùn)行中的兩個(gè)事件 beforeUpdate() { // 這時(shí)候,表示 我們的界面還沒(méi)有被更新【數(shù)據(jù)被更新了嗎? 數(shù)據(jù)肯定被更新了】 alert('beforeUpdate修改') // 得出結(jié)論: 當(dāng)執(zhí)行 beforeUpdate 的時(shí)候,頁(yè)面中的顯示的數(shù)據(jù),還是舊的,此時(shí) data 數(shù)據(jù)是最新的,頁(yè)面尚未和 最新的數(shù)據(jù)保持同步 }, updated() { console.log('界面上元素的內(nèi)容:' + document.getElementById('h3').innerText) console.log('data 中的 msg 數(shù)據(jù)是:' + this.msg) // updated 事件執(zhí)行的時(shí)候,頁(yè)面和 data 數(shù)據(jù)已經(jīng)保持同步了,都是最新的 } }) </script> </body> </html>
三、vue-resource
github地址:https://github.com/pagekit/vue-resource
1、vue-resource 的請(qǐng)求api是按照rest風(fēng)格設(shè)計(jì)的,它提供了7種請(qǐng)求api
- get(url, [data], [options]); ****
- head(url,[data],[options]);
- post(url, [data], [options]); ****
- put(url, [data], [options]);
- patch(url, [data], [options]);
- delete(url, [data], [options]);
- jsonp(url, [data], [options]); ****
2、參數(shù)介紹
都是接受三個(gè)參數(shù):
url(字符串),請(qǐng)求地址。可被options對(duì)象中url屬性覆蓋。
data(可選,字符串或?qū)ο螅?,要發(fā)送的數(shù)據(jù),可被options對(duì)象中的data屬性覆蓋。
options對(duì)象
參數(shù) 類(lèi)型 描述
url string 請(qǐng)求的URL method string 請(qǐng)求的HTTP方法,例如:'GET', 'POST'或其他HTTP方法 body Object, FormData string request body params Object 請(qǐng)求的URL參數(shù)對(duì)象 ,get headers Object request header 第三方請(qǐng)求數(shù)據(jù)需要用到 timeout number 單位為毫秒的請(qǐng)求超時(shí)時(shí)間 (0 表示無(wú)超時(shí)時(shí)間) before function(request) 請(qǐng)求發(fā)送前的處理函數(shù),類(lèi)似于jQuery的beforeSend函數(shù) progress function(event) ProgressEvent回調(diào)處理函數(shù) credentials boolean 表示跨域請(qǐng)求時(shí)是否需要使用憑證 emulateHTTP boolean 發(fā)送PUT, PATCH, DELETE請(qǐng)求時(shí)以HTTP POST的方式發(fā)送,并設(shè)置請(qǐng)求頭的X-HTTP-Method-Override emulateJSON boolean 將request body以application/x-www-form-urlencoded content type發(fā)送
3、例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue-resource"></script> </head> <body> <div id="app"> <input type="button" value="get請(qǐng)求" @click="getInfo"> <input type="button" value="post請(qǐng)求" @click="postInfo"> <input type="button" value="jsonp請(qǐng)求" @click="jsonpInfo"> </div> <script> // 創(chuàng)建 Vue 實(shí)例,得到 ViewModel var vm = new Vue({ el: '#app', data: {}, methods: { getInfo() { // 發(fā)起get請(qǐng)求 // 當(dāng)發(fā)起get請(qǐng)求之后, 通過(guò) .then 來(lái)設(shè)置成功的回調(diào)函數(shù) this.$http.get('http://vue.studyit.io/api/getlunbo').then(function (result) { // 通過(guò) result.body 拿到服務(wù)器返回的成功的數(shù)據(jù) // console.log(result.body) }) }, postInfo() { // 發(fā)起 post 請(qǐng)求 application/x-wwww-form-urlencoded // 手動(dòng)發(fā)起的 Post 請(qǐng)求,默認(rèn)沒(méi)有表單格式,所以,有的服務(wù)器處理不了 // 通過(guò) post 方法的第三個(gè)參數(shù), { emulateJSON: true } 設(shè)置 提交的內(nèi)容類(lèi)型 為 普通表單數(shù)據(jù)格式 this.$http.post('http://vue.studyit.io/api/post', {}, { emulateJSON: true }).then(result => { console.log(result.body) }) }, jsonpInfo() { // 發(fā)起JSONP 請(qǐng)求 this.$http.jsonp('http://vue.studyit.io/api/jsonp').then(result => { console.log(result.body) }) } } }); </script> </body> </html>
以上就是Vue過(guò)濾器,生命周期函數(shù)和vue-resource簡(jiǎn)單介紹的詳細(xì)內(nèi)容,更多關(guān)于Vue過(guò)濾器,生命周期函數(shù)和vue-resource的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VUE table表格動(dòng)態(tài)添加一列數(shù)據(jù),新增的這些數(shù)據(jù)不可以編輯(v-model綁定的數(shù)據(jù)不能實(shí)時(shí)更新)
這篇文章主要介紹了VUE table表格動(dòng)態(tài)添加一列數(shù)據(jù),新增的這些數(shù)據(jù)不可以編輯(v-model綁定的數(shù)據(jù)不能實(shí)時(shí)更新),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-04-04VUE中使用滾動(dòng)組件-vueSeamlessScroll
這篇文章主要介紹了VUE中使用滾動(dòng)組件-vueSeamlessScroll,需要的朋友可以參考下2023-10-10Vuex2.0+Vue2.0構(gòu)建備忘錄應(yīng)用實(shí)踐
這篇文章主要為大家詳細(xì)介紹了Vuex2.0+Vue2.0構(gòu)建備忘錄應(yīng)用實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11vue+element實(shí)現(xiàn)表格新增、編輯、刪除功能
這篇文章主要為大家詳細(xì)介紹了vue+element實(shí)現(xiàn)表格新增、編輯、刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI)
本文主要介紹了Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05vue2.x+webpack快速搭建前端項(xiàng)目框架詳解
本文給大家介紹了vue2.x、webpack、vuex、sass+axios、elementUI等快速搭建前端項(xiàng)目框架的詳細(xì)操作方法,需要的跟著學(xué)習(xí)下吧。2017-11-11解決Vue控制臺(tái)報(bào)錯(cuò)Failed to mount component: tem
這篇文章主要介紹了解決Vue控制臺(tái)報(bào)錯(cuò)Failed to mount component: template or render function not defined.問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06vue中組件的過(guò)渡動(dòng)畫(huà)及實(shí)現(xiàn)代碼
這篇文章主要介紹了vue中組件的過(guò)渡動(dòng)畫(huà),并通過(guò)實(shí)例代碼給大家介紹了過(guò)渡動(dòng)畫(huà)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11vue3中element-plus?icon圖標(biāo)的正確使用姿勢(shì)
element-plus官方提示,Icon圖標(biāo)正在向SVG?Icon遷移,之前使用的Font?Icon即將被棄用,下面這篇文章主要給大家介紹了關(guān)于vue3中element-plus?icon圖標(biāo)的正確使用姿勢(shì),需要的朋友可以參考下2022-03-03解決vue 子組件修改父組件傳來(lái)的props值報(bào)錯(cuò)問(wèn)題
今天小編就為大家分享一篇解決vue 子組件修改父組件傳來(lái)的props值報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11