不少新手前端在初期學習的時候每每把注意力放在如何編寫頁面,如何編寫效果上,羣裏有個朋友問我js是如何與後臺交互的,我簡單的說一下。前端
首先須要知道兩個東西,一個是客戶端,一個是服務器,客戶端其實就是咱們在上網時候使用的機器,大部分狀況下這個客戶端就是咱們的電腦,包括臺式電腦,筆記本電腦,手機,平板之類的。那麼服務器是什麼?服務器其實也是電腦,準確的說服務器是性能比較強大的電腦,正常狀況下一臺服務器能夠連續半年甚至一年不關機,連續運行,這個技能咱們家用電腦大多作不到。正是由於服務器能夠保持長時間的運行,從而保證咱們放在服務器上文件能夠隨時都被訪問到.ajax
如今來看一下服務器和客戶端之間的聯繫,這裏就以網站爲基礎,通俗的解釋一下。咱們訪問網站大多數使用的都是瀏覽器,經過在地址欄裏面寫下域名,按下回車就能夠訪問到咱們想要訪問的網站,那麼這個具體的過程確定不是那麼簡單,咱們在地址欄中寫下網址之後,按下回車,這個時候瀏覽器首先會訪問本身所在的電腦上的host文件,查看host文件中是否記錄有咱們在地址欄中輸入的域名,若是有,則找到與之對應的ip,訪問去了。若是沒有,它就要去到一個叫作dns的系統中,這個dns是存在於公網中的,他的做用就是保存許多域名和ip(真實的dns系統比這個複雜的多,這裏只是方便理解簡述一下),他找到dns之後,把域名告訴dns,讓dns去查一下,看看有沒有與之對應的ip,若是查到了,就會拿着ip去找那個網站去了!!這裏說一下,ip實際上能夠理解爲地址,是咱們存放程序時候標記的地址。域名只是爲了幫助咱們更好的記住,實際上真正要找到網站仍是要靠ip。數據庫
到此爲止,咱們已經找到了與這個ip對應的服務器,那麼接下來解釋二者互相對話啦,瀏覽器告訴服務器我要看首頁,服務器回答好,而後把首頁交給瀏覽器,去看吧!!這裏我打了一個比方,事實上這個過程都是創建在網絡通信協議上的,其中有一個最經常使用的就是http協議,瀏覽器與服務器之間一切交流都是創建在這個協議之上的,這裏我簡單的講一下這個協議吧,http協議分爲兩部分,分別是請求部分和響應部分,請求部分是又瀏覽器發出的,服務器接受到之後讀取協議內容,而後發出響應,瀏覽器接受到響應的內容,並把它展現到電腦上。http協議中的請求部分分爲請求行,請求頭信息,請求消息體三部分,請求行包括咱們想要訪問的域名,協議等級,請求消息頭包括具體訪問的文件,鏈接長度,瀏覽器內核信息等,消息體則是瀏覽器發送給服務器上的具體數據,這個數據只有在發送方式爲post的狀況纔會出如今消息體上,若是是get方式,則出如今地址欄中。服務器收到相關請求之後,開始分析具體要幹什麼,而後去執行,執行完成之後吧數據所有返回,相應部分就不詳細說明了。瀏覽器
還要注意一件事情,那就是服務器收到請求之後作的事情是如何完成的,我以PHP程序爲例。假如服務器收到請求須要訪問網站首頁,那麼首先就會去調取後臺對應的首頁文件,而後開始解析這個文件,解析的過程當中,PHP就發揮做用了,好比說,頁面中的數據都是依靠它來進去讀取的,假如首頁中有一塊地方須要展現出今天的最新新聞,那麼PHP就會調用相關程序,而後去訪問數據庫,把對應的數據從數據庫中取出來,而後展現到頁面中,以此類推,其餘的的數據都是這樣搞出來的。固然了,PHP還會作不少其餘事情啊,好比判斷登陸狀態,檢測ip之類的,最後當PHP把全部要作的事情都作完之後,最後就是把處理好的文件返回給瀏覽器了,這裏注意一下,服務返回給瀏覽器的其實就是已經生成好的靜態頁面了,裏面沒有一行後臺代碼,瀏覽器接收到這個返回到數據,而後開始逐行解析,最後展現給咱們看。服務器
以上就是先後臺交互流程。至於Js與後臺交互,說白了,就是依靠js像後臺發送數據,而後接受服務器返回的數據就是了。這裏要說到一個技術就是ajax,其實總體的流程都是同樣的,咱們經過js的事件觸發ajax,像服務器發送相關數據,服務器獲得數據,處理完成之後返回給咱們對應的數據,js能夠獲取到這個數據,而後該怎麼處理就怎麼處理,這個和咱們上面說的流程基本同樣,區別就是經過 js發送請求能夠達到無刷新的效果,正常咱們訪問一個頁面,服務器都是整個頁面的返回給咱們,若是是經過ajax的話,只會返回咱們想要的數據,這樣,是不會刷新頁面的,加快了速度,減小流量的浪費,還有不少好處的,很少說了。(若是不瞭解ajax,那麼可能須要首先學習下ajax哦!!)網絡
這篇文章沒有一句代碼,說的也不是很專業,只能做爲入門來了解,有問題的地方,請你們多多指教!post