当前位置: 首页 > 网络应用技术

Cookie API确实很难使用。您曾经制作过相关的轮子吗?

时间:2023-03-05 20:32:32 网络应用技术

  歌德说:读一本好书是要在贵族人中说话。

  以同样的方式,阅读出色的开源项目的源代码是与优秀的大家伙进行交流,并在巨人队的肩膀上学习我们将通过阅读JS-的源代码来创建cookie的肩膀。cookie?

  cookie是直接存储在浏览器中的一小串数据。它们是HTTP协议的一部分,由RFC 6265规范定义。最常见的用途之一是我们可以使用Document.Cookie属性。从浏览器访问cookie。

  Cookie的本地API,非常“丑陋”:

  修改我们可以写入文档。cookie.cookie.ut这不是数据属性,它是一个getter/setter。分配操作将经过专门处理。文档的写作操作。Cookie只能更新IT中提到的cookie涉及其他cookie。

  分配时将传递该字符串,并连接键值。如果多个项目被半元素分开...

  删除到过去的到期时间,自然删除?

  但是很明显,这种语义化太糟糕了。

  让我们首先了解API

  好,我们可能知道是这样的

  它更加简洁和方便,您知道这条线在一眼所做的事情?

  本段可能太瘦了。如果您被怀疑,您只想直接查看实施部分的实现部分?

  一个简单,轻巧的JavaScript API,用于处理饼干

  适用于所有浏览器

  ?接受任何字符

  大测试

  ????

  支持ES模块

  支持AMD / CONCORJS

  RFC 6265兼容

  有用的Wiki

  编启用自定义编码/解码

  <800字节Gzip!

  有很多优势

  提将来会详细提及衡量?

  可能是我之前写过的API的引入

  它确实很少依赖,只有发展依赖性,没有生产依赖性,非常好?

  似乎入口在

  从这一点可以看出

  当然,没有这样的目录。这需要包装?

  .mjs也刚刚看到了这个后缀,这是我第一次看到它,你呢,你呢

  ESM和CJ是将程序分为多个单个模块的标准,可以根据需要导入。区别在于,标准函数已在浏览器端和Nodejs.s.s.act.s.act.s.act.s.act.s.

  也就是说。

  没有重复更多的介绍和差异?

  输入,第一个是api.mjs,这是关键文件?

  emm ..一个包含和方法的一个,返回一个

  该方法隐藏在其中?

  乍一看,当然,代码仍然可以理解每一行正在做什么?但是这是众所周知的?

  开源项目也迭代?

  Okok,让我们逐步“复制”源代码

  为了传递参数返回值,TS语法更清晰?

  设置一个钥匙值对,所以

  除了关键值之外,还有背后的属性?不要忘记它

  让我们使用写入接口来限制传输的属性:

  我们知道它看起来像这样,因此根据相应的规则操作其字符串,以获取钥匙值并将其转换为

  要注意的有趣点之一是,价值可能有这个角色,因此有必要处理它特殊?

  例如,他是“ yan wen chartial = = _ =”?(~~不应该真正在cookie hh ~~里放一个表达式,但是实际上可能会滴入该值?实际上,我真的没有想到这个问题,我只是在阅读源后才看到它代码

  记录接收两个参数 - 键,值,因此对象中的键和值必须在键和值中。

  很容易,只需将到期时间设置为过去?

  从技术上讲,名称和值可以是任何字符。为了维护有效的格式,他们应该使用构建的函数将其转换为?然后使用该函数来解码。

  您还记得在readme中写的任何字符?这要求我们编码和解码编码和解码?

  源代码中的converter.mjs将这两个操作封装为和谐,并以导出为导出。最后,将其通过 - 还原为代码的耦合,并铺平了以后的自定义配置的设置?

  以前的编码解码变为这样:

  我们有一个构建的总和,但是我们不必使用这两个来编码和解码。我们还可以使用其他方法 - 也就是说,可以自定义/解码?可以自定义的内容。

  除了可以自定义这两种方法之外,其余属性也可以自定义静音识别,并且在配置之后,每次都不需要通过配置传递 - 因此我们需要导出两种方法

  封装已封装。合并对象时,重复属性名称是上一个功能的后续覆盖范围的函数,以完成自定义配置属性和转换方法。

  当前的cookie可能是这样的对象

  当前的cookie直接在整体情况下。这是非常危险的。每个人都可以更改它,也可能找不到。我们将其设置为零件,将其封装到功能上,调用相应的自定义属性和自定义转换方法。获取初始cookie对象

  现在它可能是源代码的形状?

  它用于生成对象并使用对象并冻结。

  现在您无法修改cookie,属性?

  使用函数生成对象的是解决全局污染的问题,并且在更新对象时也可以使用它

  现在,您回顾一下源代码是否更清晰?

  说到这个将数据存储在浏览器中的小东西,我不得不提及它,

  Web存储对象,还允许我们在浏览器上保存密钥/值对。

  他们的差异呢

  生命周期默认为浏览器关闭,并且可以自定义浏览器以关闭浏览器,除非它删除或清除缓存。如果有帮助,请喜欢它并共同取得进展?

  如果您认为这篇文章逐步很好,欢迎阅读手写延迟,您需要这些功能?