前言
今年的故事有点特别,那就从春夏秋冬简单说一下吧。
为什么会有 Cookie
HTTP 协议是无状态的,HTTP 协议自身不对请求和响应之间的通信状态进行保存
什么是 Cookie
Cookie 指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密,如 token )。
通过给每个不同的客户端一些带有特定信息的 Cookie,就可以在每次请求的时候,服务器获取到一些期望获取的信息,比如知道这次访问的用户是谁( token )。
Cookie
就是一种浏览器管理状态的一个文件。
|
|
大半个月前,去重温了一下 冴羽 的博客。就想着把执行上下文的东西写写,但是因为考试,一直没有写出来,现在有空,刚好就把它给写完,作为 2018 年最后一篇技术文。
当 JavaScript
顺序执行下来的时候,会遇到三种可执行代码,全局代码
,函数代码
,eval代码
当 JavaScript 遇到执行到这些代码的时候,会创建一个环境,执行上下文
,与此同时,会将这个环境压入一个名为执行上下文栈
的环境去管理不同的执行上下文。
执行上下文(Execution context);
执行上下文栈(Execution context stack, ECS);
形象点可以模拟成一个数组 ECStack = [];
在 Javascript 开始解释代码的时候,最先遇到的是全局代码,所以全局代码的执行上下文最先入栈,globalContext.
|
|
开头总是不知道写些什么东西……
JavaScript
被设计的初愿是执行在浏览器上可以动态加载的脚本,以便进行 DOM
节点的操作,所以,如果它是像 Java
一样的多线程语言,那么对 DOM
的操作就是未知且不可预测的了。
所以:
JavaScript
是一门单线程语言。
单线程就意味着有丶事情做起来没那么理想化,比如读取一个文件的事件,你以为它读完了文件内容而进行下一步的操作,然而运行的时候却发现,并没有这个结果存在,最后才发现,oh!!原来这个操作是异步的。。对,没错,单线程由此引出了 同步
和 异步
的问题。只有将某些操作(如读取文件),作为异步执行,才能避免 阻塞
,使脚本执行时间更迅速,用户体验更好。
所谓的事件循环,就是
JavaScript
执行异步操作的过程
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。
说实话,我起始真的不知道怎么去介绍缓存,所以引用了上面相对官方的定义。我想几乎每个开发者都碰到过缓存的问题吧,甚至有很多情况下我们会说这个问题已经修复了,你清理下缓存就好了。这篇文章我们就细细的来挖掘下缓存的种种轶事。
很多开发者习惯把cookie、webStorage以及IndexedDB存储的数据也称之为缓存,理由是都是保存在客户端的数据,没有什么区别。其实这是不严谨的,cookie的存在更多的是为了让服务端区别用户,webStorage和IndexedDB则更多用在保存具体的数据和在客户端存储大量结构化数据(文件/blobs)上面。
实际上所谓的缓存只有一种——它是请求资源的副本。试想一下,如果每一个资源我们客户端都会保存一份副本,这会怎么样?客户端会炸掉,开发者会疯掉!所以我们需要一份协议来处理缓存,可以让开发者控制缓存的建立和删除。谁呢?还能有谁,HTTP呗。HTTP协议里定义了很多关于缓存的请求和响应字段,这也是接下来我们重点要逼逼叨的对象,研究下究竟是哪些字段怎么影响缓存的。
text( )
返回文本内容
html( )
返回元素内容(包括html标记)
val( )
返回字段的值
attr( )
获取属性值
|
|
同时以上方法均可以为元素赋新值
|
|
同时以上方法均有回调函数,两个参数,第一个是当前元素的下标,第二个是原始的值,函数返回值作为新值
|
|
|
|
jQuery 是为事件处理特别设计的
鼠标事件:
click dblclick:点击事件,单击和双击
mouseenter mouseleave mousedown mouseup:鼠标移上去、移开、点下去、点击松开
hover(function, function) 第一个函数是 `mouseenter` 第二个函数是 `mouseleave`
focus blur:焦点,获取焦点和失去焦点
键盘事件:
keypress keydown keyup
前几天,跟着教程写了一个
Vue
的仿新闻端的小项目。
用 vue init webpack-simple xxx
构建项目,内部的主要结构
|
|