2k words 2 mins.

# 认识 Cookie Cookie(复数形态 Cookies),又称为 “小甜饼”。类型为 “小型文本文件,某些网站为了辨别用户身份而存储在用户本地终端(Client Side)上的数据。 浏览器会在特定的情况下携带上 cookie 来发送请求,我们可以通过 cookie 来获取一些信息; Cookie 总是保存在客户端中,按在客户端中的存储位置,Cookie 可以分为内存 Cookie 和硬盘 Cookie。 内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭时 Cookie 就会消失,其存在时间是短暂的; 硬盘 Cookie...
4.3k words 4 mins.

# 认识 IndexedDB 什么是 IndexedDB 呢? 我们能看到 DB 这个词,就说明它其实是一种数据库(Database),通常情况下在服务器端比较常见; 在实际的开发中,大量的数据都是存储在数据库的,客户端主要是请求这些数据并且展示; 有时候我们可能会存储一些简单的数据到本地(浏览器中),比如 token、用户名、密码、用户信息等,比较少存储大量的数据; 那么如果确实有大量的数据需要存储,这个时候可以选择使用 IndexedDB; IndexedDB 是一种底层的 API,用于在客户端存储大量的结构化数据。 它是一种事务型数据库系统,是一种基于 JavaScript...
2.4k words 2 mins.

# 认识 Storage WebStorage 主要提供了一种机制,可以让浏览器提供一种比 cookie 更直观的 key、value 存储方式: localStorage.setItem("name", "localStorage")sessionStorage.setItem("name",...
4.7k words 4 mins.

# JSON 的由来 在目前的开发中,JSON 是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式。 JSON 的全称是 JavaScript Object Notation(JavaScript 对象符号): JSON 是由 Douglas Crockford 构想和设计的一种轻量级资源 (数据) 交换格式,算是 JavaScript 的一个子集; 但是虽然 JSON 被提出来的时候是主要应用 JavaScript 中,但是目前已经独立于编程语言,可以在各个编程语言中使用; 很多编程语言都实现了将 JSON...
2.2k words 2 mins.

# npm 发布自己的包 注册 npm 账号:https://www.npmjs.com/ 选择 sign up npm init 修改 package.json , 例如这样: { "name": "test-exec-generator", "version": "1.0.0", "description": "a test generator", "main": "index.js",...
8.9k words 8 mins.

# 代码共享方案 我们已经学习了在 JavaScript 中可以通过模块化的方式将代码划分成一个个小的结构: 在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具; 这个工具我们可以让同事通过导入的方式来使用,甚至你可以分享给世界各地的程序员来使用; 如果我们分享给世界上所有的程序员使用,有哪些方式呢? 方式一:上传到 GitHub 上、其他程序员通过 GitHub 下载我们的代码手动的引用; 缺点是大家必须知道你的代码 GitHub 的地址,并且从 GitHub...
7.1k words 6 mins.

# 认识 ES Module JavaScript 没有模块化一直是它的痛点,所以才会产生我们前面学习的社区规范:CommonJS、AMD、CMD 等, 所以在 ES 推出自己的模块化系统时,大家也是兴奋异常。 ES Module 和 CommonJS 的模块化有一些不同之处: 一方面它使用了 import 和 export 关键字; 另一方面它采用编译期的静态分析,并且也加入了动态引用的方式; ES Module 模块采用 export 和 import 关键字来实现模块化: export 负责将模块内的内容导出; import 负责从其他模块导入内容; 了解:采用 ES...
7.5k words 7 mins.

# 什么是模块化? 到底什么是模块化、模块化开发呢? 事实上模块化开发最终的目的是将程序划分成一个个小的结构; 这个结构中编写属于自己的逻辑代码,有自己的作用域,不会影响到其他的结构; 这个结构可以将自己希望暴露的变量、函数、对象等导出给其结构使用; 也可以通过某种方式,导入另外结构中的变量、函数、对象等; 上面说提到的结构,就是模块;按照这种结构划分开发程序的过程,就是模块化开发的过程; 无论你多么喜欢 JavaScript,以及它现在发展的有多好,它都有很多的缺陷: 比如 var 定义的变量作用域问题; 比如 JavaScript 的面向对象并不能像常规面向对象语言一样使用...
3.1k words 3 mins.

# 错误处理方案 很多时候我们可能验证到不是希望得到的参数时,就会直接 return: 但是 return 存在很大的弊端:调用者不知道是因为函数内部没有正常执行,还是执行结果就是一个 undefined; 事实上,正确的做法应该是如果没有通过某些验证,那么应该让外界知道函数内部报错了; 如何可以让一个函数告知外界自己内部出现了错误呢? 通过 throw 关键字,抛出一个异常; throw 语句: throw 语句用于抛出一个用户自定义的异常; 当遇到 throw 语句时,当前的函数执行会被停止(throw...
6.8k words 6 mins.

# 浏览器中的 JavaScript 线程 我们经常会说 JavaScript 是单线程的,但是 JavaScript 的线程应该有自己的容器进程:浏览器或者 Node。 浏览器是一个进程吗,它里面只有一个线程吗? 目前多数的浏览器其实都是多进程的,当我们打开一个 tab 页面时就会开启一个新的进程,这是为了防止一个页面卡死而造成所有页面无法响应,整个浏览器需要强制退出; 每个进程中又有很多的线程,其中包括执行 JavaScript 代码的线程; JavaScript 的代码执行是在一个单独的线程中执行的: 这就意味着 JavaScript...