題目1: ajax 是什么?有什么作用?
1.ajax是什么?
Ajax全稱為"Asynchronous JavaScript and XML"(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術,是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。通過在后臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
2.Ajax = 異步 JavaScript 和 XML(標準通用標記語言的子集)
3.Ajax是一種技術方案,但并不是一種新的編程語言新技術。它依賴的是現有的CSS/HTML/Javascript,而其中最核心的依賴是瀏覽器提供的XMLHttpRequest對象,是這個對象使得瀏覽器可以發出HTTP請求與接受HTTP響應。實現在頁面不刷新的情況下和服務器進行數據交互。一句話實現兩者的關系:我們使用XMLHttpRequest對象來發送一個Ajax請求。2.ajax作用:
傳統的WEB應用程序模型是這樣工作的:用戶的界面操作觸發HTTP請求,服務器在接收到請求之后進行一些業務邏輯處理,如保存數據等,然后向客戶端返回一個HTML頁面。但這種方式并沒有給予用戶很好的應用體驗,當服務器在處理數據的時候,用戶則處于等待的狀態,每一步操作都需要等待,太多的等待會使用戶越來越沒有耐心。而Ajax則大不相同,它通過Ajax引擎,使得應用過程很自然,操作很流暢,因為其只和服務器交換有用的數據,而頁面顯示等不必要的數據則不再重新加載。Ajax引擎其實就是JavaScript、XML、XMLHttpRequest等等各項技術的綜合應用。
通過 Ajax,我們可以使得客戶端得到豐富的應用體驗及交換操作,而用戶不會感覺到有網頁提交或刷新的過程,頁面也不需要被重新加載,應用的數據交換都被隱藏。-
3.ajax優缺點:
- 優點:
- 更新數據頁面無需刷新,用戶體驗更佳
- 使用異步方式與服務器通信,響應速度更快
- 可將服務器以前負擔的一些工作轉嫁到客戶端,利用客戶端的閑置能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。AJAX的原則是“按需取數據”,可最大程度減少冗余請求
- 作為基于標準化的并被廣泛支持的技術,無需下載插件或小程序
- 使因特網應用程序更小、更快、更友好
- 缺點:
- 不支持瀏覽器back按鈕
- AJAX暴露了與服務器交互的細節帶來安全問題
- 對搜索引擎的支持較弱
- 破壞了程序的異常機制
- 不容易調試
- 優點:
題目2: 前后端開發聯調需要注意哪些事情?后端接口完成前如何 mock 數據?
在開發之前,前后端需要協作商定數據和接口的各項細節,后端負責提供數據,前端負責展示數據(根據數據負責頁面的開發)
-
前后端開發聯調注意事項:
- URL:接口名稱
- 發送請求的參數和格式(get/post)
- 數據響應的數據格式(數組/對象)
- 根據前后端約定,整理接口文檔
-
如何mock數據
- 搭建web服務器
- 根據接口文檔仿造假數據
- 關聯前后端文件,開啟web服務器
- 驗證前端頁面功能及顯示是否正確
題目3:點擊按鈕,使用 ajax 獲取數據,如何在數據到來之前防止重復點擊?
var isLoading = false //添加狀態鎖,初始為false,用于判斷是否在加載數據
btn.addEventListener('click',function(){
if(!isLoading){
return; //如果正在請求數據,這次點擊什么都不做
}
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function(){
if(xhr.readystate === 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304){
console.log(xhr.responseText)
}else{
console.log("error")
}
isLoading = false; //readystate = 4數據到來,狀態鎖變為false,可以再次點擊
}
xhr.open('get',url,true);
xhr.send()
isloading = true //數據發送,進入等待數據狀態,狀態鎖變為true
})
題目4:實現加載更多的功能,效果范例 。
實現代碼:
Github
本地mock成功: