17-06-js_storage

每日攻克一个知识点

  • cookie和web存储(localStorage,sessionStorage)相同点和不同点
  • cookie
  • localStorage

cookie和web存储相同点和不同点

1.都会在浏览器端保存,有大小限制,同源限制(不同站点无法相互访问读取对方存储的数据)
2.cookie会在请求时发送到服务器,作为会话标识,服务器可修改cookie;webstorage不会发送到服务器
3.cookie有path概念,子路径可以访问父路径cookie,父路径不能访问子路径cookie
4.有效期:cookie在设置的有效期内有效,默认为浏览器关闭;sessionStorage在窗口关闭前有效,localStorage长期有效,直到用户删除
5.共享:sessionStorage不能共享,localStorage在同源文档之间共享,cookie在同源且符合path规则的文档之间共享
6.localStorage的修改会促发其他文档窗口的update事件
7.cookie有secure属性要求HTTPS传输
8.浏览器不能保存超过300个cookie,单个服务器不能超过20个,每个cookie不能超过4k。web storage支持大容量

/*cookieStorage1.0
 *设置cookie
    cookieStorage.setCookie(key,value,time,path);参数:key,值,有效时间(单位秒),作用域;参数顺序不能变
 *获取cookie
    cookieStorage.getCookie(key)
 *获取cookie条数
     cookieStorage.length
 *获取key值
    cookieStorage.key(n)
 *删除某一个cookie
    cookieStorage.removeCookie(key)
 *全部删除
     cookieStorage.clear()
 */
 (function (cookieStorage) {
    //创建一个存储全部cookie信息的对象及容器
    var cookie = (function () {
        var cookie = {};
        var all = document.cookie;
        if (all === '') return cookie;
        var list = all.split('; ');//分离每一条cookie信息
        for (var i = 0; i < list.length; i++) {
            var item = list[i];
            var icon = item.indexOf('=');
            var name = item.substring(0, icon);
            var value = item.substring(icon + 1);
            cookie[name] = value;
        };
        return cookie;
    }());
    //key容器
    var keys = [];

    for (var key in cookie) {
        keys.push(key);
    };

    //length属性
    cookieStorage.length = keys.length;

    //获取特定key值的方法
    cookieStorage.key = function (n) {
        if (n < 0 || n >= cookieStorage.length) return null;
        return keys[n];
    };

    //获取指定cookie的值
    cookieStorage.getCookie = function (name) {
        return cookie[name] || null;
    }

    //设置cookie值
    cookieStorage.setCookie = function (key, value, time, path) {
        if (!(key in cookie)) {
            keys.push(key);
            cookieStorage.length++;
        }
        cookie[key] = value;

        var cookieValue = key + '=' + value;
        if (time) cookieValue += '; max-age=' + time;
        if (path) cookieValue += '; path=' + path;
        document.cookie = cookieValue;
    };

    //删除指定cookie
    cookieStorage.removeCookie = function (key) {
        if(!(key in cookie)) return;
        delete cookie[key];//删除对象中的key值的value;

        for (var i = 0; i < keys.length; i++) {
            if(keys[i] === key) {
                keys.splice(i, 1);
                break;
            };
        };//删除keys中的key值
        cookieStorage.length--;

        document.cookie = key + '=;max-age=0';//把cookie中的key值设为空;有效期设为0;删除cookie中的值
    };

    //删除所有cookie
    cookieStorage.clear = function () {
        for (var i = 0; i < keys.length; i++) {
            document.cookie = key[i] + '=;max-age=0';
        }
        cookie = {};
        keys = [];
        cookieStorage.length = 0;
    };

    window.cookieStorage = cookieStorage;
})(window.cookieStorage || {})

localStorage

/*localStorage设置*/
localStorage.setItem(key,value);

/*localStorage获取*/
localStorage.getItem(key);

/*localStorage删除*/
localStorage.removeItem(key);

/*localStorage全部删除*/
localStorage.clear();
npm run dev 使用时出现INFO Starting development server... 10% building 2/2 modules 0 activeError: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (D:\vue-element-admin\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (D:\vue-element-admin\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (D:\vue-element-admin\node_modules\webpack\lib\NormalModule.js:471:10) at D:\vue-element-admin\node_modules\webpack\lib\NormalModule.js:503:5 at D:\vue-element-admin\node_modules\webpack\lib\NormalModule.js:358:12 at D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at iterateNormalLoaders (D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:221:10) at D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:236:3 at runSyncOrAsync (D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:130:11) at iterateNormalLoaders (D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:232:2) at Array.<anonymous> (D:\vue-element-admin\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (D:\vue-element-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at D:\vue-element-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9 10% building 2/5 modules 3 active ...in\node_modules\eslint-loader\index.js??ref--13-0!D:\vue-element-admin\src\main.jsnode:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen);是怎么回事
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值