話說前幾天的任務吧,是一個整個頁面數據都需要請求接口來渲染的配置頁面(標題/圖標什麼的也都是後臺提供),我本想用AJAx來請求的,但是導師review的時候表示這樣頁面加載會比較慢,讓我嘗試用<script>
來請求那些不會頻繁的數據。so~~
首先定義我們的數據處理函數
var handle = function(data){
console.log(data);
/*處理代碼*/
};
然後請求接口
<script type="text/javascript" src="//example.txt"></script>
接口的數據格式(將原本的JSON數據作爲參數傳入函數,此時的接口也就是一個函數調用的形式):
handle(
{
error_no: "0",
error_info: "",
current_page: 1,
total_page: 58
}
//JSON數據
)
【原理介紹】
先引入一段話:
<script>
元素可以作爲一種Ajax傳輸機制:只須設置<script>
元素的src屬性,然後瀏覽器就會發送一個http請求以下載src所指向的URL。
使用<script>
元素進行ajax傳輸的一個主要原因是,它不受同源策略的影響,因此可以使用它們從其他服務器請求數據,第二個原因是包含JSON編碼數據的響應體會自動解碼(即執行)。
也就是說 <script>
引入example.txt後,我們執行了渲染數據的函數handle,頁面渲染。
【關於爲什麼這種方式會比AJAX請求快?】
這裏引入一個我找的資料中我最能理解的一個答案:
使用script標籤是用於跨域請求的,Ajax請求無法跨域訪問(即從其它服務器請求)
至於請求時間,如果script標籤是靜態的(即寫在頁面源碼內),那它是在網頁加載後和其它的頁面資源一起併發請求,並順序執行。
而Ajax請求應該是放在類似onReady回調裏吧?它會在網頁都加載完畢後才執行,一個併發,一個串行,前者速度會快一些。
參考鏈接:
關於頁面加載時間的問題~ajax請求的時間和用script標籤加載腳本的時間差多少呢?