08 2019 档案

摘要:1. 位置 我们浏览器查找缓存会有优先级: 1. Service Worker 2. Memory Cache 3. Disk Cache 4. Push Cache 5. 网络请求 Service Worker 在上一篇博文,我们已经介绍过Service Worker,我们可以利用。 如果我们定义 阅读全文
posted @ 2019-08-29 23:09 张啊咩 阅读(262) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:Service Worker 简介 在 Service Worker 之前,我们一般用 AppCache 来实现离线体验(就是配置 Manifest 文件的方式),这个会有很多问题(博主曾尝试过,体验非常差,非常难用,而且不灵活)。 而 Service Worker 可以写脚本去灵活自由地 阅读全文
posted @ 2019-08-28 09:16 张啊咩 阅读(489) 评论(0) 推荐(0) 编辑
摘要:在 H5 之前,我们浏览器存储都只能使用 cookie,而一般我们会用 cookie 来存储我们的 SessionID,作为身份凭证。 对比其他存储方式 安全问题 早年 cookie 使用有很多安全的问题,xss 和 csrf 攻击都围绕着 cookie 展开。 注入恶意脚本,形成 xss 攻击,就 阅读全文
posted @ 2019-08-27 08:41 张啊咩 阅读(169) 评论(0) 推荐(0) 编辑
摘要:跨域 如果协议、域名或者端口有一个不同就是跨域。 同源策略 推荐阅读:浏览器同源政策及其规避方法 因为浏览器出于安全考虑(主要用来 防止信息泄露 和 CSRF 攻击),制定了同源策略,意思就是跨域时 Ajax 请求会失败。 问题: 然而同源策略还是不能完全阻止 CSRF,它只是把 Response 阅读全文
posted @ 2019-08-25 23:37 张啊咩 阅读(221) 评论(0) 推荐(0) 编辑
摘要:在Ajax2.0中多了CORS允许我们跨域,但是其中有着几种的限制:Origin、Methods、Headers、Credentials 1.Origin 当浏览器用Ajax跨域请求的时候,会带上一个请求头“Origin: 协议://页面域名”,而服务器需要返回一个响应头“Access-Contro 阅读全文
posted @ 2019-08-25 19:20 张啊咩 阅读(434) 评论(0) 推荐(0) 编辑
摘要:首先我们先弄明白浏览器事件触发机制,分为三个阶段: 1. 事件捕获阶段:window 往事件触发处传播,遇到注册的捕获事件会触发 (addEventListener 的 true) 2. 事件目标处理函数:传播到事件触发处时触发注册的事件 (博主没搞懂这个阶段) 3. 事件冒泡阶段:从事件触发处往 阅读全文
posted @ 2019-08-25 10:27 张啊咩 阅读(3444) 评论(0) 推荐(0) 编辑
摘要:斐波拉契数列 a1 = 1 a2 = 1 an = an-1 + an-2 (n > 2时) 第 n 项 阅读全文
posted @ 2019-08-24 19:51 张啊咩 阅读(300) 评论(0) 推荐(0) 编辑
摘要:对于普通对象,我们理解了它的 key-value 数据结构 和 原型链相关的知识 基本就可以了,但是如果想用好JS的对象还远远不够。 因为我们日常工作中,接触到的主要 API,几乎都是由这些对象提供的。 根据对象的来源来分类 宿主对象 内置对象 固有对象: 原生对象 普通对象 固有对象: 原生对象 阅读全文
posted @ 2019-08-23 07:33 张啊咩 阅读(339) 评论(0) 推荐(0) 编辑
摘要:new new 做了什么事?1. 以 Object.protoype 为原型创建一个新对象 2. 以新对象为 this,执行函数的 [[call]] 3. 如果 [[call]] 的返回值是对象,那么,返回这个对象,否则返回第一步创建的新对象 call 实际上就是把方法挂在对象上,执行然后删除 ap 阅读全文
posted @ 2019-08-22 10:56 张啊咩 阅读(439) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:https://www.cnblogs.com/chengxs/p/10919311.html 在进行老生代的标记清除法回收以前,还会有一个新生代的垃圾回收算法执行。 新生代和老生代 所谓新生代,指的是新产生的对象;老生代就是经历过新生代垃圾回收后还“存活”下来的对象。 新生代的垃圾回收算 阅读全文
posted @ 2019-08-21 08:25 张啊咩 阅读(1309) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:《JS 闯关记》之垃圾回收和内存管理 常见的垃圾回收有2种策略:标记清除 和 引用计数 标记清除 会遍历堆中所有的对象,然后标记活的对象,在标记完成后,销毁所有没有被标记的对象。 在标记大型对内存时,可能需要几百毫秒才能完成一次标记。这就会导致一些性能上的问题。 为了解决这个问题,2011 阅读全文
posted @ 2019-08-21 08:08 张啊咩 阅读(521) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:https://www.cnblogs.com/chengxs/p/10919311.html chrome内存限制 存在限制 Chrome限制了所能使用的内存极限(64位为1.4GB,32位为1.0GB),这也就意味着将无法直接操作一些大内存对象。 为何限制 Chrome之所以限制了内存 阅读全文
posted @ 2019-08-21 07:40 张啊咩 阅读(14146) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:https://blog.hhking.cn/2019/04/02/babel-v7-update/ useBuiltIns false 1 "useBuiltIns": false, 此时不对 polyfill 做操作。如果引入 @babel/polyfill,则无视配置的浏览器兼容,引 阅读全文
posted @ 2019-08-20 17:27 张啊咩 阅读(13003) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:源自Babel的多包管理工具:Lerna 对于多个模块的大型项目的协作管理,一般地有multirepo、monorepo和submodules等多种方式: multirepo是将多个模块分别分为多个仓库,早期的Babel(Babel6以前)使用的就是这种方式; submodules是借助g 阅读全文
posted @ 2019-08-20 09:10 张啊咩 阅读(561) 评论(0) 推荐(0) 编辑
摘要:我们之前谈过浏览器的Event Loop:https://www.cnblogs.com/amiezhang/p/11349450.html 简单来说,就是每执行一个宏任务,就去执行微任务队列,直到清空,再执行下个宏任务。 那么NodeJs的Event Loop是怎么样的呢? NodeJS的Even 阅读全文
posted @ 2019-08-20 08:57 张啊咩 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:强制孙依赖的版本 今天博主遇到一个棘手的问题,@vue/cli-service 依赖了一个包 portfiner@^1.0.20,但是 2 天前,这个包更新到了1.0.22,带来了一些问题。 博主第一反应就是想 yarn add portfinder@1.0.21,看看yarn可不可以复用这个版本。 阅读全文
posted @ 2019-08-19 21:13 张啊咩 阅读(2616) 评论(0) 推荐(0) 编辑
摘要:只需要2步: 1. 在package.json 定义 一下 : 2. 在使用的文件首行写 #!/usr/bin/env node 阅读全文
posted @ 2019-08-19 13:24 张啊咩 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:废话不多说,直接上代码: 这个简版的Promise已经可以实现到链式的地步了, 如果return是一个非Promise,则直接resolve,如果是Promise,则等then再resolve 阅读全文
posted @ 2019-08-19 08:01 张啊咩 阅读(192) 评论(0) 推荐(0) 编辑
摘要:去抖(debounce) 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。 表现: 节流(throttle) 规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。 表现: 区别: 去抖和节流十分相似,不一样的是,如果短时间内不断触发: 去抖:停止触 阅读全文
posted @ 2019-08-18 21:55 张啊咩 阅读(206) 评论(0) 推荐(0) 编辑
摘要:在ES6之前,官方没有出来import export这种模块化的语法。 为了提高代码复用、避免污染全局,民间写了很多模块化的实现: 1. 立即执行函数 2. AMD和CMD 这个我在很久之前就写过博文:js模块化的两种规范AMD和CMD 3. CommonJs 这个是NodeJs出的模块化标准,直到 阅读全文
posted @ 2019-08-18 09:15 张啊咩 阅读(216) 评论(0) 推荐(0) 编辑
摘要:官方文档:https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 == 判断是按一下步骤执行的: 1. 如果是NaN和NaN,返回false 2. 如果类型相同,判断内容是否相同 3. 如果是undefined和null,返回true 阅读全文
posted @ 2019-08-16 09:10 张啊咩 阅读(343) 评论(0) 推荐(0) 编辑
摘要:1. git push --mirror --mirror模式会把本地的分支都克隆 // 先用--bare克隆裸仓库 git clone git@gitee.com:zhangamie/testApp.git --bare // 进入testApp.git,这样就可以把所有分支都克隆到新仓库了 gi 阅读全文
posted @ 2019-08-14 21:34 张啊咩 阅读(2121) 评论(0) 推荐(0) 编辑
摘要:submodule 官方文档 添加 git submodule add -b master git@git.xxx:xxx/xxx.git src/xxx 删除 1、删除子仓库文件 (rm -rf [子模块path]) 2、删除.gitmodules里面相关部分 (vim .gitmodule 或者 阅读全文
posted @ 2019-08-14 20:46 张啊咩 阅读(1202) 评论(0) 推荐(0) 编辑
摘要:说到宏任务和微任务,我们就不得不提 Event Loop 了 JS的本质是单线: 1. 一般来说,非阻塞性的任务采取同步的方式,直接在主线程的执行栈完成。 2. 一般来说,阻塞性的任务都会采用异步来执行,异步的工作一般会交给其他线程完成,然后回调函数会放到事件队列中。 当主线程的任务执行完了(执行栈 阅读全文
posted @ 2019-08-14 00:11 张啊咩 阅读(19424) 评论(1) 推荐(0) 编辑
摘要:官方文档:Puppeteer 今天大概介绍一下我项目用到的puppeteer操作: 上面的操作其实已经可以完成相当一部分任务了!其他api看官方文档查询 阅读全文
posted @ 2019-08-12 22:30 张啊咩 阅读(1187) 评论(0) 推荐(0) 编辑
摘要:1. 下载docker desktop https://www.docker.com/products/docker-desktop 更多操作指令 ps: 值得注意的是,刚下载下来的docker只能在管理员身份运行的cmd或者powershell才能运行,重启后就可以普通用户下使用了 2. 挑选并下 阅读全文
posted @ 2019-08-12 22:08 张啊咩 阅读(944) 评论(0) 推荐(0) 编辑
摘要:1. 安装 ESLint 扩展 首先,打开 VSCode 扩展面板并搜索 ESLint 扩展,然后点击安装 2. 项目安装eslint 3. 设置eslint配置 生成.eslintrc.js (记得把依赖安装一下喔) 4. 设置eslint插件的配置(在项目级别或者全局级别设置) 在项目级别,我们 阅读全文
posted @ 2019-08-12 21:42 张啊咩 阅读(1233) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:为什么你的 Git 仓库变得如此臃肿 有时候我们不小心提交了一些大文件上去,后来删除了,但是已经于事无补了,整个git的提及已经蹭蹭上去了。 这个时候怎么办呢? 1. 查看有哪些大文件(top 5) 2. git filter-branch git filter-branch --inde 阅读全文
posted @ 2019-08-11 22:32 张啊咩 阅读(3106) 评论(0) 推荐(0) 编辑
摘要:相信小伙伴们对git不陌生吧,但是究竟git是怎么样工作的,它的构成又是怎么样的呢?我们来看看: 上图很明显的说明,git是又4个部分组成的: 工作区域--add-->暂存区域--commit-->本地版本仓库--push-->远程版本仓库 基本指令 1. add git add -u:将文件的修改 阅读全文
posted @ 2019-08-11 22:28 张啊咩 阅读(204) 评论(0) 推荐(0) 编辑
摘要:推荐阅读:解决内存问题 1. 任务管理器 我们看看下面这幅图: 内存占用空间:原生内存,Dom节点就是存在原生内存里面的。 Javascript使用的内存:代表JS堆内存,我们只需要关心括号里面的值(实时值)就可以了,JavaScript对象就存在JS堆里面。 2. Performance 我们看看 阅读全文
posted @ 2019-08-09 08:09 张啊咩 阅读(7805) 评论(0) 推荐(1) 编辑
摘要:不可扩展对象 仅阻止添加自身的属性。但属性仍然可以添加到对象原型。 可以用 Object.isExtensible(obj) 来判断对象是否可扩展 密封对象 密封对象不可扩展,而且已有的属性成员[[configurable]]特性将被设置成false 可以用 Object.isSealed() 来判 阅读全文
posted @ 2019-08-07 08:26 张啊咩 阅读(2137) 评论(0) 推荐(1) 编辑
摘要:stage0 strawman任何讨论、想法、改变或者还没加到提案的特性都在这个阶段。只有TC39成员可以提交。 stage1 proposal (1)产出一个正式的提案。 (2)发现潜在的问题,例如与其他特性的关系,实现难题。 (3)提案包括详细的API描述,使用例子,以及关于相关的语义和算法。s 阅读全文
posted @ 2019-08-05 13:13 张啊咩 阅读(488) 评论(0) 推荐(0) 编辑
摘要:事务是存储引擎实现的。 特性ACID: 1.原子性:要么全都执行,要么全都不执行 2.一致性:事务完成时,所有数据保持一致状态 3.隔离性:一个事务发生不影响其他事物 4.持久性:事务完成后,对系统的影响是永久性 事务并发时,可能发生的问题: 1.丢失更新:一个事务更新之后,另一个事务也更新了,但是 阅读全文
posted @ 2019-08-04 19:38 张啊咩 阅读(129) 评论(0) 推荐(0) 编辑
摘要:原始类型 网上很多说JavaScript的原始(基本)数据类型答案都是错的。 正确的是这样: 原始(基本)数据类型6种:String,Number,Boolean,Null,Undefined,Symbol 最新的 stage 3,有一个新的原始类型 BigInt,等到 stage 4 的时候,就正 阅读全文
posted @ 2019-08-04 15:24 张啊咩 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1. 打开设置 2. 点击“网络和Internet” 3.设置手动代理 . 设置完成后就可以愉快的玩耍啦 阅读全文
posted @ 2019-08-02 13:22 张啊咩 阅读(16793) 评论(0) 推荐(0) 编辑
摘要:高并发的问题,最终都是处理成串行执行。 同时发送的请求都是“竞争关系”,先获得锁的,就先执行。 高并发的增删查往往没大问题, 多线程并发可能会引发的问题: 阅读全文
posted @ 2019-08-01 22:46 张啊咩 阅读(164) 评论(0) 推荐(0) 编辑
摘要:并发 和 并行 的区别 推荐阅读:https://www.zhihu.com/question/33515481 并发:有处理多个任务的能力,不一定要同时。 并行:有同时处理多个任务的能力。 多线程似乎一直给我们这样的印象就是多线程比单线程快,其实这是一个伪命题.事无绝对,多线程有时候确实比单线程快 阅读全文
posted @ 2019-08-01 22:25 张啊咩 阅读(4048) 评论(0) 推荐(1) 编辑
摘要:推荐阅读:JavaScript 运行机制详解:再谈Event Loop 为什么JS要设计成单线程? 引用阮老师的原话: JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比 阅读全文
posted @ 2019-08-01 22:11 张啊咩 阅读(540) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示