朋友去面試了,回來問我通常頁面間傳參用什麼方法,我說我通常用是三種一、QueryString 二、cookies 三、webStorage。javascript
QueryString很簡單,就是在URL後面拼接參數,但缺點是傳的值會顯示在瀏覽器的地址欄中且不能傳遞對象,只適用於傳遞簡單的且安全性要求不高的整數值。今天呢主要對比一下cookies和webStorage。html
1、cookie的實現方法 cookies是存儲在用戶本地終端上的數據,cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下,並且還能夠限制失效時間。 //寫cookie function writeCookie(name, value, hours, path) { var expire = ""; if (hours !== null) { expire = new Date((new Date()).getTime() + hours * 3600000); expire = "; expires=" + expire.toGMTString(); } path = path ? "; path=" + path : ""; document.cookie = name + "=" + encodeURIComponent(value) + expire + path; };
//讀取cookie tools.readCookie = function (name) { var cookieValue = ""; var search = name + "="; if (document.cookie.length > 0) { offset = document.cookie.indexOf(search); if (offset != -1) { offset += search.length; end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; cookieValue = decodeURIComponent(document.cookie.substring(offset, end)); } } return cookieValue; };
2、web Storage
html5中的Web Storage包括了兩種存儲方式:sessionStorage和localStorage。
注:storage只能存儲字符串的數據,對於JS中經常使用的數組或對象卻不能直接存儲。
二者的實現方法相同。html5
一、.setItem( key, value)存儲value,將value存儲到key字段:java
sessionStorage.setItem("key", "test"); localStorage.setItem("site", "segmentFault");
二、.getItem(key)獲取value,獲取指定key本地存儲的值web
var value = sessionStorage.getItem("key"); var site = localStorage.getItem("site");
三、.removeItem(key)刪除key,刪除指定key本地存儲的值面試
sessionStorage.removeItem("key"); localStorage.removeItem("site");
四、.clear()清除全部的key/value數組
sessionStorage.clear(); localStorage.clear();
上面說了一堆的實現方法,如今能夠說說它們的區別了。
共同點:
它們都是保存在瀏覽器端,且同源的。
區別:
一、cookies
(1)ookie數據始終在同源的http請求中攜帶,即cookie在瀏覽器和服務器間來回傳遞;
(2)cookie數據路徑(path)的概念,能夠限制cookie只屬於某個路徑下。
(3)存儲大小限制也不一樣,cookie數據不能超過4k,同時由於每次http請求都會攜帶cookie,因此cookie只適合保存很小的數據。
(4)cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉。
(5)cookie也是在全部同源窗口中都是共享的。瀏覽器
Web Storage不須要經過瀏覽器的請求將數據傳給服務器,所以相比cookie來講可以存儲更多的數據,大概5M左右。
二、LocalStorage
(1)localStorage 在全部同源窗口中都是共享的。
(2)始終有效,窗口或瀏覽器關閉也一直保存,除非手動刪除,所以用做持久數據。
三、sessionStorage
(1)保存用戶臨時會話數據,一旦關閉瀏覽器,全部數據都會消失。
(2)sessionStorage不在不一樣瀏覽器窗口中共享安全