JS時間線


在講AJAX之前,我們要了解一下時間線,也就是JS的加載過程

時間線的存在對代碼的邏輯有影響,就是加載順序先后的影響

 

時間線是個什么步驟,

1.創建document對象,瀏覽器開始去解析你的html界面,document.readyState = "loading"

 

 2.當遇到外部資源(外部的js文件,外部的css文件,外部的圖片,a標簽,iframe標簽)的時候,除了script標簽中的src(當沒有設置異步的屬性async,defer)為同步,其余的全部為異步(主線程去調度子線程完成)。有且只有這一個script標簽中的src為同步

dom解析完成以后 document.readyState = "interactive" 

 

 我理解為JS從上到下執行的話,碰到外部鏈接(css,js,iframe...)會先進行下載,在未下載之前,頁面不會進行接下來的步驟

 

除了script標簽中的,其他的所有外部資源下載完成


下載完成以后,document.readyState = "complete"
window觸發load事件

 

DOMContentLoaded(jquery中ready方法的封裝),這是唯一一個有大寫字母的事件名稱  

這個事件和load事件有什么區別呢,DOMContentLoaded事件的效率高於load,因為DOMContentLoaded是在html解析完成后就執行,而load是在頁面上多的資源,也就是圖片、媒體等加載完成后才執行

 我們來看看一個例子

 

 明明我先寫的load事件,卻先打印出DOMContentLoaded,就是因為時間線的加載問題,這個簡單的例子明顯的反應了上面所說的時間線的加載過程

———————————————————————————————————————————————————————

 

JS的異步加載方案有三種

1.defer  僅限IE

2.async  html5中新增屬性

3.按需加載: 

  創建script標簽

  為其設置src屬性

  成為異步后再插入到dom中

  這是個啥操作呢?

 

 

在AJAX中,一般都是采用JSON格式進行數據傳輸

 

 

 

 JSON數據格式很嚴謹,必須是雙引號包裹數據

這里有兩個方法可以將json數據進行轉換

1.JSON.stringify() 把json對象轉換成json字符串

  此方法需要用一個變量接受

  

 

 

2.JSON.parse()   把json字符串轉換成json對象

  我們再將這個變量變為json數據格式

  

 

 記住,json數據格式只能用雙引號包裹

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM