效果圖:
功能實現(xiàn):
一则剃、驗證用戶登錄狀態(tài):
關鍵點: 如果需要頁面打開立刻執(zhí)行某些代碼,就需要把代碼放在最上面淆衷,而且不依賴jQuery等任何的js文件(用原生js寫)缸榄。
? ??位置置頂:將js代碼放在最后,按照代碼由上到下的執(zhí)行順序吭敢,會先加載首頁頁面碰凶,再驗證是否登錄暮芭,如果沒有登錄鹿驼,會立即閃現(xiàn)到登錄頁面,有 “閃屏的現(xiàn)象”辕宏。所以畜晰,將代碼放在頁面頂端,先行驗證瑞筐,如果沒有登錄直接就進到登錄頁面凄鼻,不會加載首頁頁面。
? ??用原生js寫ajax:為了解決閃屏問題聚假,使用原生js實現(xiàn)功能块蚌,不依賴任何js文件,并且需要將ajax設置為同步執(zhí)行(ajax默認是異步執(zhí)行膘格,不會阻塞頁面代碼的加載)峭范,這樣的好處是會阻塞后面代碼的執(zhí)行,即:按照代碼順序瘪贱,先執(zhí)行驗證代碼纱控,再執(zhí)行頁面加載。
二菜秦、 實現(xiàn)用戶登錄功能:
關鍵點:【dataType:'JSON'】
? ? 在調(diào)用接口時尔店,要注意返回數(shù)據(jù)的格式,打印回調(diào)函數(shù)接收到的被返回的數(shù)據(jù),如果數(shù)據(jù)的類型是字符串嚣州,需要將返回的值轉換成json格式期犬,因為在函數(shù)中判斷信息時用到了返回的status的值,轉換成json格式才能用點方法得到避诽,不轉換就會得到undefined龟虎。
? ? 在回調(diào)函數(shù)前將數(shù)據(jù)類型轉換成json格式,添加【dataType:'JSON'】沙庐。
三鲤妥、個人中心頁-用戶登出功能
關鍵點:阻止a標簽的默認行為
? ??退出選項使用的a標簽,在點擊a標簽時铸抑,a標簽默認會有一個跳轉的行為贡耽,如果目標位置為空,就會刷新一下頁面(閃一下)鹊汛。為了讓頁面不刷新蒲赂,就需要阻止a標簽的默認行為,在點擊事件里面加上 “event.preventDefault()”或者 “return false”刁憋,
1.event.stopPropagation()方法
這是阻止事件的冒泡方法滥嘴,不讓事件向document上蔓延,但是默認事件任然會執(zhí)行至耻,當你掉用這個方法的時候若皱,如果點擊一個連接,這個連接仍然會被打開尘颓,
2.event.preventDefault()方法
這是阻止默認事件的方法走触,調(diào)用此方法是,連接不會被打開疤苹,但是會發(fā)生冒泡互广,冒泡會傳遞到上一層的父元素;
3.return false ?痰催;
這個方法比較暴力兜辞,他會同事阻止事件冒泡也會阻止默認事件;寫上此代碼夸溶,連接不會被打開逸吵,事件也不會傳遞到上一層的父元素;可以理解為return false就等于同時調(diào)用了event.stopPropagation()和event.preventDefault()
四缝裁、獲取當前登錄的用戶信息
關鍵點:多個頁面共用的信息足绅,封裝成函數(shù)以便于引入頁面
? ? 因為用戶信息會在評論、文章等多個頁面出現(xiàn)韩脑,為了便于引入并渲染到頁面氢妈,封裝成函數(shù),保存到一個共用的js文件段多,需要時直接引入到頁面首量。
五、獲取網(wǎng)站信息
關鍵點:選擇器與數(shù)據(jù)的對應
? ? 此處易錯加缘,因為網(wǎng)站上的數(shù)據(jù)較多,需要做對應的處理觉啊,先打印服務器返回的數(shù)據(jù)拣宏,并且需要注意選擇器的選用,要將數(shù)據(jù)一一對應渲染到正確的地方杠人。
jQuery 遍歷 - eq() 方法
eq() 方法將匹配元素集縮減值指定 index 上的一個勋乾。 .eq(index),index是整數(shù)嗡善,指示元素的位置(最小為 0)辑莫。如果是負數(shù),則從集合中的最后一個元素往回計數(shù)滤奈。例如: $('li').eq(2).css('background-color', 'red');
請注意摆昧,index 是基于零的撩满,并且是在 jQuery 對象中引用元素的位置蜒程,而不是在 DOM 樹中。 如果無法根據(jù)指定的 index 參數(shù)找到元素伺帘,則該方法構造帶有空集的 jQuery 對象昭躺,length 屬性為 0。
六伪嫁、獲取評論信息
關鍵點:模板引擎插入規(guī)則與if、else判斷
需要先打印ajax獲取到的數(shù)據(jù)张咳,根據(jù)后臺返回的數(shù)據(jù)結構將數(shù)據(jù)對應的鍵插入到模板中帝洪。并且,在模板中也可以插入if脚猾、else判斷語句葱峡,可以根據(jù)返回的數(shù)據(jù)做判斷,并顯示對應的結果到頁面龙助,不符合的判斷條件的不會被渲染顯示砰奕。
關鍵點:模板引擎的調(diào)用與頁面的渲染,分頁信息的設置
通過控制臺打印查看后臺返回的數(shù)據(jù)军援,通過模板引擎的ID引用模板引擎仅淑,并直接渲染到頁面上。
在這里的ajax中需要設置返回的數(shù)據(jù)胸哥,圖中的 pageSize 設置了返回一頁信息的條數(shù)涯竟,pageNum則根據(jù)分頁信息動態(tài)生成,以控制頁面上要顯示哪一頁對應的信息空厌。
關鍵點:分頁管理數(shù)據(jù)
因為返回的數(shù)據(jù)較多蝇庭,需要進行分頁管理醉鳖,通過改變變量 pageNum 的值,來改變頁面上渲染的數(shù)據(jù)哮内。這里設置了頁碼的顯示為5頁盗棵,添加了首頁和尾頁的功能,需要注意的是頁碼的顯示北发,為了更好的用戶體驗纹因,做了一些判斷。(用上分頁插件后琳拨,腰不酸了瞭恰,腿也不疼了……)
關鍵點:頁碼點擊事件
此處有用到not 方法狱庇;如果給定一個表示 DOM 元素集合的 jQuery 對象惊畏,.not() 方法會用匹配元素的子集構造一個新的 jQuery 對象。所應用的選擇器會檢測每個元素密任;不匹配該選擇器的元素會被包含在結果中颜启。
關鍵點:高亮頁碼顯示
為了提高用戶體驗浪讳,針對特殊的情況缰盏,在最開始的5頁與最后的5頁需要做一個頁碼顯示的判斷。