柚子快報邀請碼778899分享:微信小程序--邏輯層與界面層
柚子快報邀請碼778899分享:微信小程序--邏輯層與界面層
61 })
1 // pages/demo/demo.js 2 3 //獲取當前小程序?qū)ο髮嵗?4 var app = getApp(); 5 Page({ 6 7 /** 8 * 頁面的初始數(shù)據(jù) 9 / 10 data: { 11 12 }, 13 14 /* 15 * 生命周期函數(shù)–監(jiān)聽頁面加載 16 / 17 onLoad: function (options) { 18 app.foo(); 19 20 }, 21 22 /* 23 * 生命周期函數(shù)–監(jiān)聽頁面初次渲染完成 24 / 25 onReady: function () { 26 27 }, 28 29 /* 30 * 生命周期函數(shù)–監(jiān)聽頁面顯示 31 / 32 onShow: function () { 33 //在每次該界面喚醒時,獲取當前頁面的調(diào)用棧: 34 console.log(getCurrentPages()); 35 console.log("當前調(diào)用棧中的頁面數(shù)量: " + getCurrentPages()); 36 console.log(getCurrentPages()[getCurrentPages().length - 1] == this); 37 }, 38 39 /* 40 * 生命周期函數(shù)–監(jiān)聽頁面隱藏 41 / 42 onHide: function () { 43 44 }, 45 46 /* 47 * 生命周期函數(shù)–監(jiān)聽頁面卸載 48 / 49 onUnload: function () { 50 51 }, 52 53 /* 54 * 頁面相關(guān)事件處理函數(shù)–監(jiān)聽用戶下拉動作 55 / 56 onPullDownRefresh: function () { 57 58 }, 59 60 /* 61 * 頁面上拉觸底事件的處理函數(shù) 62 / 63 onReachBottom: function () { 64 65 }, 66 67 /* 68 * 用戶點擊右上角分享 69 */ 70 onShareAppMessage: function () { 71 72 } 73 })
三.界面層–數(shù)據(jù)綁定
在程序的開發(fā)過程中,界面層提供一種模板機制,可以借助一種特殊的語法來完成數(shù)據(jù)的綁定,將動態(tài)的數(shù)據(jù)綁定到模板當中,最近將嵌入過后的數(shù)據(jù)顯示到界面中,小程序中使用的是Mustache 語法(雙大括號)語法:
1
2
3
7 8
{{ message }}
9
{{ person.name }} : {{ person.age }}
10
1 // pages/demo/demo.js 2 3 Page({ 4 //為頁面提供數(shù)據(jù),界面和邏輯之間的橋梁 5 data:{ 6 message:“hello world”, 7 person:{ 8 name: “張三”, 9 age:25 10 } 11 } 12 })
–數(shù)據(jù)綁定語法補充,除了在頁面標簽的內(nèi)部我們會使用Mustache語法進行輸出,在標簽的內(nèi)部,我們也可以使用Mustache語法:
1
2
3
7 8
{{ message }}
9
{{ person.name }} : {{ person.age }}
10
14 15
16
{{ ‘hello’ }}
17
{{ 111 }}
18
{{ 111 + 222 }}
19
{{ 111 < 222 ? ‘yes’ : ‘no’ }}
20
{{ true }}
21
24 復選框1 25 復選框2 26
四.列表渲染
在邏輯層中,很多的情況下都會是一個數(shù)組類型的數(shù)據(jù)(列表數(shù)據(jù)),那么此時在我們的界面層中就需要使用到列表渲染:
1
4 復選框1 5 復選框2 6
7 8
20
30 31
{{ bbb + 1 }}:
32 33
{{ item.name }} {{ aaa.name }}
34 35
36 37 38 39
40
{{ i }} * {{ j }} = {{ i * j }}
41
42 43 44 45
五.事件處理
1
3 點擊
1 buttonTapHandle: function(e){ 2 console.log(“點擊按鈕打印此條.”); 3 // console.dir()將一個對象以樹狀的形式打印到控制臺,便于我們調(diào)試復雜對象 4 console.dir(e); 5 }
六.事件冒泡
1
4 5 6
1 innerHandler: function(){ 2 console.log(“觸發(fā)內(nèi)部事件”); 3 }, 4 outerHandler: function(){ 5 console.log(“觸發(fā)外部事件”); 6 }
七.事件傳參
1
8 參數(shù)事件
1 handleWithParm(e){ 2 console.log(e); //獲取當前的點擊元素 3 console.log(e.target.dataset); //獲取元素上所有data-[xxx]屬性的集合 4 }
八.單向數(shù)據(jù)流
1
4 5 6
{{ inputMessage }}
7
1 inputHandler: function(e) { 2 //e.detail.value 獲取到當前輸入的值 3 console.log(e.detail.value); 4 //小程序中的數(shù)據(jù)綁定,本質(zhì)上是一次綁定,在綁定完成之后,并不會去監(jiān)視數(shù)據(jù)的變化.如果想要得到此次的變化,那么就需要使用setData的方法進行改變 5 //setData是用來改變data數(shù)據(jù)的,與直接賦值區(qū)別在于setData可以通知界面作出變化,而直接賦值的話沒有辦法實現(xiàn)這一點(早期的JS無法實現(xiàn)) 6 this.setData({ 7 inputMessage: "您輸入的內(nèi)容: " + e.detail.value 8 }) 9 console.log(this.data.message); 10 }
九.登錄頁面案例
1
2 3 4 6 8 9 10 登錄 11 注冊 12 13
1 // pages/login/login.js 2 /* 實現(xiàn)登錄界面 3 1. 設(shè)計數(shù)據(jù)的結(jié)構(gòu)(data屬性) 4 2. 將數(shù)據(jù)綁定到指定的元素上 5 */ 6 Page({ 7 data: { 8 username: “”, 9 password: “” 10 }, 11 //用于處理登錄按鈕點擊的事件 12 buttonLogin: function() { 13 console.log(“執(zhí)行登錄事件”); 14 }, 15 //用于處理注冊按鈕點擊的事件 16 buttonRegister: function() { 17 //1. 首先需要知道用戶輸入了什么 18 console.log(this.data.username + " " + this.data.password); 19 //2. 根據(jù)用戶輸入的值去判斷 20 //3. 根據(jù)判斷的結(jié)果做出響應 21 console.log(“執(zhí)行注冊事件”); 22 }, 23 //用戶輸入用戶名 24 usernameChangeHandler: function(e) { 25 this.setData({ 26 username: e.detail.value 27 }) 28 }, 29 //用戶輸入密碼 30 passwordChangeHandler: function(e) { 31 this.setData({ 32 password: e.detail.value 33 }) 34 } 35 })
十.抽象共同的事件處理函數(shù)
如我在我們的代碼之中為每一個input標簽都增加一個事件綁定函數(shù),那么在我們的代碼之中,將會存在很多的重復代碼,為了避免這樣的的情況,我們可以抽象共同的事件處理函數(shù):
1
2 3 4 6 8 9 10 登錄 11 注冊 12 13
1 // pages/login/login.js 2 /* 實現(xiàn)登錄界面 3 1. 設(shè)計數(shù)據(jù)的結(jié)構(gòu)(data屬性) 4 2. 將數(shù)據(jù)綁定到指定的元素上 5 */ 6 Page({ 7 data: { 8 username: “”, 9 password: “” 10 }, 11 //用于處理登錄按鈕點擊的事件 12 buttonLogin: function() { 13 console.log(this.data.username + " " + this.data.password); 14 console.log(“執(zhí)行登錄事件”); 15 }, 16 //用于處理注冊按鈕點擊的事件 17 buttonRegister: function() { 18 //1. 首先需要知道用戶輸入了什么 19 console.log(this.data.username + " " + this.data.password); 20 //2. 根據(jù)用戶輸入的值去判斷 21 //3. 根據(jù)判斷的結(jié)果做出響應 22 console.log(“執(zhí)行注冊事件”); 23 }, 24 //用戶輸入用戶名 25 // usernameChangeHandler: function(e) { 26 // this.setData({ 27 // username: e.detail.value 28 // }) 29 // }, 30 //用戶輸入密碼 31 // passwordChangeHandler: function(e) { 32 // this.setData({ 33 // password: e.detail.value 34 // }), 35 // console.log(e); 36 // } 37 //抽象上述兩個方法,完成事件 38 inputChangeHandler: function(e) { 39 var key = e.target.dataset.name; 40 var value = e.detail.value; 41 var changed = {}; 42 changed[key] = value; 43 this.setData(changed); 44 } 45 })
–除此之外,我們還可以使用表單的方式來進行數(shù)據(jù)的接收,這樣可以免除這一些列復雜的操作:
1 2 4 6 7 8 登錄 9 注冊 10
1 //使用表單提交的方式來完成數(shù)據(jù)接收 2 loginSubmit: function(e){ 3 console.log(e.detail.value); 4 }
十一.條件渲染
1
2
最后
今天關(guān)于面試的分享就到這里,還是那句話,有些東西你不僅要懂,而且要能夠很好地表達出來,能夠讓面試官認可你的理解,例如Handler機制,這個是面試必問之題。有些晦澀的點,或許它只活在面試當中,實際工作當中你壓根不會用到它,但是你要知道它是什么東西。
最后在這里小編分享一份自己收錄整理上述技術(shù)體系圖相關(guān)的幾十套騰訊、頭條、阿里、美團等公司2021年的面試題,把技術(shù)點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡(luò) + 諸多細節(jié),由于篇幅有限,這里以圖片的形式給大家展示一部分。
還有?高級架構(gòu)技術(shù)進階腦圖、Android開發(fā)面試專題資料,高級進階架構(gòu)資料 幫助大家學習提升進階,也節(jié)省大家在網(wǎng)上搜索資料的時間來學習,也可以分享給身邊好友一起學習。
【Android核心高級技術(shù)PDF文檔,BAT大廠面試真題解析】
【算法合集】
【延伸Android必備知識點】
【Android部分高級架構(gòu)視頻學習資源】
Android精講視頻領(lǐng)取學習后更加是如虎添翼!進軍BATJ大廠等(備戰(zhàn))!現(xiàn)在都說互聯(lián)網(wǎng)寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術(shù)能力夠強,公司換掉的代價大,怎么可能會被裁掉,都是淘汰末端的業(yè)務Curd而已!現(xiàn)如今市場上初級程序員泛濫,這套教程針對Android開發(fā)工程師1-6年的人員、正處于瓶頸期,想要年后突破自己漲薪的,進階Android中高級、架構(gòu)師對你更是如魚得水,趕快領(lǐng)取吧! 《Android學習筆記總結(jié)+移動架構(gòu)視頻+大廠面試真題+項目實戰(zhàn)源碼》,點擊傳送門,即可獲取! 79657831)]
【延伸Android必備知識點】
[外鏈圖片轉(zhuǎn)存中…(img-FoMLOHqW-1715079657832)]
【Android部分高級架構(gòu)視頻學習資源】
Android精講視頻領(lǐng)取學習后更加是如虎添翼!進軍BATJ大廠等(備戰(zhàn))!現(xiàn)在都說互聯(lián)網(wǎng)寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術(shù)能力夠強,公司換掉的代價大,怎么可能會被裁掉,都是淘汰末端的業(yè)務Curd而已!現(xiàn)如今市場上初級程序員泛濫,這套教程針對Android開發(fā)工程師1-6年的人員、正處于瓶頸期,想要年后突破自己漲薪的,進階Android中高級、架構(gòu)師對你更是如魚得水,趕快領(lǐng)取吧! 《Android學習筆記總結(jié)+移動架構(gòu)視頻+大廠面試真題+項目實戰(zhàn)源碼》,點擊傳送門,即可獲??!
柚子快報邀請碼778899分享:微信小程序--邏輯層與界面層
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。