前端和后台的关系
最近初步學習了node js,在練習了一個注冊登錄頁面的過程中,我思考了一些問題。
1.前端和后臺,在一個web中分別承擔了什么任務?
前端包括:靜態(tài)頁面的呈現(xiàn)、js功能的實現(xiàn)、以及向后臺發(fā)送數(shù)據(jù)(通過ajax)。
后臺:接收前端發(fā)送來的請求、判斷是哪種請求,如果是文件請求發(fā)送文件回前端;如果是數(shù)據(jù)請求,處理數(shù)據(jù),再返回給前臺處理結果。
2.當瀏覽器輸入網(wǎng)址后,前端和后臺分別執(zhí)行了什么操作?
瀏覽器將自動發(fā)送文件請求給后臺,后臺處理后將文件返回給前臺,前端接收后,瀏覽器生成dom樹、css樹、js樹,全部創(chuàng)建好之后開始渲染。靜態(tài)界面加載完之后呈現(xiàn)給用戶,用戶進行注冊登陸的操作,將操作數(shù)據(jù)(用戶名、密碼)發(fā)送給后臺。
3.前端思維和后臺思維(前端,頁面為主體,一切圍繞頁面,后臺以單個請求為單位)。
前端:是整體的思維,以整個頁面的布局(dom、css)、作用(js)為主要思路進行自己的處理。
后臺:以單個的請求為單位進行出來。主要做的是,前端來一個請求后臺處理該請求然后做出響應,再來再處理響應,流程是固定的,差異體現(xiàn)在處理過程上。
4.前后端分離有什么好處?
使前端處理數(shù)據(jù)更簡潔,不用對數(shù)據(jù)進行操作,直接接收處理好的就可以。
5.后臺的異步和如何處理異步?
- 在get和post兩種發(fā)送數(shù)據(jù)的方法中,
都有req.on(‘end’,function(){}),而
get:get信息都在url里,信息一次性全部發(fā)完,不存在等待的狀況,但req.on函數(shù)是在系統(tǒng)里默認的,所以(即使不在get里手動添加)仍然是執(zhí)行的,但一次性發(fā)完了,所以不存在異步的情況,是同步的。
post:post信息是大量的,在send(data)里面發(fā)送,需要等待data一段一段的全部發(fā)完,在等待req.on函數(shù)全部接收完信息之前,后面的代碼就停在那里等待上面函數(shù)接受完,所以這時就產生了異步,會將接收的過程req.on放入序列中等待執(zhí)行,后續(xù)代碼繼續(xù)加載。 - 這樣情況下的異步會導致什么問題呢?
數(shù)據(jù)還未解析就使用,會導致數(shù)據(jù)為undefined。 - 如何解決異步的問題呢?
解決很簡單,只需要將后續(xù)使用數(shù)據(jù)操作的代碼放進req.on(‘end’,function(){})函數(shù)里就可以了。
總結
- 上一篇: Python实现自动控制登录网页
- 下一篇: 机载雷达电子对抗视景仿真训练系统软件