关于javascript:工具库用久了你还会原生操作-Cookie-吗

34次阅读

共计 2239 个字符,预计需要花费 6 分钟才能阅读完成。

用得好了,工具库和框架的确是一大助力,但就怕咱们会因而习惯了走捷径,而忘了本人的基本依附是什么。

前言

前端技术的飞速发展,给从业人员不可避免地带来了“疲劳”感,咱们经常会感叹学不动了。于是,为了给咱们“减压”,各种工具库和框架们诞生了。

对公司来说,通过工具库和框架的引入,一方面是束缚了代码格调,进步了可维护性,最重要的是能够缩短开发周期,早日出成品。

对集体来说,各种工具库和框架用起来几乎不要太爽,再也不必哼哧哼哧地啃那些原生的操作方法了,既解放了脑力,又多出了摸鱼的工夫,还不必思考办法的准确性……一箭多雕的交易几乎是太划算了!

公司是谋求效益的,主张引入工具库和框架无可非议,可如果咱们集体也沉迷于此,那就真的有问题了。

诚然,咱们不能否定工具库和框架的劣势,但能作为咱们后退基石的永远不可能是工具库和框架。

用得好了,工具库和框架的确是一大助力,但就怕咱们会因而习惯了走捷径,而忘了本人的基本依附是什么。

感叹有点多,但的确是有感而发。明天有测试组的共事找我给他们写一个记住明码的脚本,因为思考到性能简略,没必要引入工具库,就应用原生操作来实现,后果,我居然写地磕磕绊绊,中途还不得不上网查资料。就这么一个简略的实现,何至于此啊!?

饭来张口的日子过多了,就忘了怎么做饭了!我真想晓得,如果当某一天没了“饭源”时,咱们会有多少人被“饿死”?

Cookie 的操作

对于 Cookie 的相干概念,若有须要,可查看 这里 和 这里。

设置 Cookie

Cookie 的设置须要蕴含以下属性:

  • key String 类型
  • value String 类型
  • expires 可选,合乎 HTTP-date 标准的工夫戳,也可设置 max-age(数字,单位为秒)。设置则为 持久性 Cookie,缺省则为 会话期 Cookie
  • path 可选,String 类型
  • domain 可选,String 类型
  • secure 可选,String 类型

一个简略的设置 Cookie 的办法:

function setCookieItem(sKey, sValue, vEnd, sPath, sDomain, bSecure) {if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) {return false;}
    var sExpires = "";
    if (vEnd) {switch (vEnd.constructor) {
            case Number:
                sExpires = vEnd === Infinity 
                    ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" 
                    : "; max-age=" + vEnd;
                break;
            case String:
                sExpires = "; expires=" + vEnd;
                break;
            case Date:
                sExpires = "; expires=" + vEnd.toUTCString();
                break;
        }
    }
    document.cookie = encodeURIComponent(sKey) 
        + "=" + encodeURIComponent(sValue) 
        + sExpires 
        + (sDomain ? "; domain=" + sDomain : "") 
        + (sPath ? "; path=" + sPath : "") 
        + (bSecure ? "; secure" : "");
    return true;
}

是否存在 Cookie

function isCookieItemExisted(sKey) {return new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=").test(document.cookie);
}

删除 Cookie

删除 Cookie 只须要将其过期工夫 expires 设为过来的工夫即可,也能够通过设置 max-age 为 0 或 -1 来删除 Cookie:

function removeCookieItem(sKey, sPath, sDomain) {if (!sKey || !isCookieItemExisted(sKey)) {return false;}
    document.cookie = encodeURIComponent(sKey) 
        + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" 
        + (sDomain ? "; domain=" + sDomain : "") 
        + (sPath ? "; path=" + sPath : "");
    return true;
}

查找 Cookie

function getCookieByKey(sKey) {return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
  },

总结

他人造的轮子或者好用,但为了晋升本人,咱们最好也应该试着本人造造轮子,即便毛糙,但那也是本人的。

~

~ 本文完,感激浏览!

~

学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!

大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!

你来,怀揣冀望,我有墨香相迎!你归,无论得失,唯以余韵相赠!

常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!

正文完
 0