CommonJS 模块化简易实现

2018-10-11
阅读 6 分钟
3.7k
CommonJS 是一种模块化的标准,而 NodeJS 是这种标准的实现,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

高阶函数应用 —— 柯里化与反柯里化

2018-10-11
阅读 5 分钟
3.7k
在 JavaScript 中,柯里化和反柯里化是高阶函数的一种应用,在这之前我们应该清楚什么是高阶函数,通俗的说,函数可以作为参数传递到函数中,这个作为参数的函数叫回调函数,而拥有这个参数的函数就是高阶函数,回调函数在高阶函数中调用并传递相应的参数,在高阶函数执行时,由于回调函数的内部逻辑不同,高阶函数的执...

Canvas + WebSocket + Redis 实现一个视频弹幕

2018-10-11
阅读 24 分钟
5.6k
首先,我们需要实现页面布局,在根目录创建 index.html 布局中我们需要有一个 video 多媒体标签引入我们的本地视频,添加输入弹幕的输入框、确认发送的按钮、颜色选择器、字体大小滑动条,创建一个 style.css 来调整页面布局的样式,这里我们顺便创建一个 index.js 文件用于后续实现我们的核心逻辑,先引入到页面当中。

异步发展流程 —— 异步编程的终极大招 async/await

2018-10-11
阅读 5 分钟
3.1k
这篇文章是异步发展流程系列的最后一篇,可能会涉及 Promise、Generators、co 等前置知识,如果对这些不是很了解可以看这个系列的前三篇:

异步发展流程 —— Generators + co 让异步更优雅

2018-10-11
阅读 8 分钟
1.9k
JavaScript 原有的表示 “集合” 的数据结构,主要有 Array 和 Object,在 ES6 中又加入了 Set 和 Map,这样就有了四种数据集合,还可以组合使用它们,如数组的成员是 Map 或 Object,这样就需要一种统一的接口机制,用来处理所有不同的数据结构。

异步发展流程 —— 手写一个符合 Promise/A+ 规范的 Promise

2018-10-11
阅读 14 分钟
2.8k
Promise 是 js 异步编程的一种解决方案,避免了 “回调地狱” 给编程带来的麻烦,在 ES6 中成为了标准,这篇文章重点不是叙述 Promise 的基本用法,而是从零开始,手写一版符合 Promise/A+ 规范的 Promise,如果想了解更多 Promise 的基本用法,可以看 异步发展流程 —— Promise 的基本使用 这篇文章。

异步发展流程 —— Promise 的基本使用

2018-10-11
阅读 5 分钟
2.2k
Promise 是 ES6 的新特性,提供了对 js 异步编程控制的新的解决方案,在过去书写异步代码时要靠回调函数,当异步操作依赖于其他异步操作的返回值时,会出现一种现象,被程序员们称为 “回调地狱”,即多层回调函数嵌套,这种代码的可读性、维护性都很差,因此诞生了 Promise,当然 Promise 并不是完全摆脱回调,而只是改变...

九种 “姿势” 让你彻底解决跨域问题

2018-10-11
阅读 15 分钟
12.6k
同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到 XSS、CSRF 等攻击。所谓同源是指 "协议 + 域名 + 端口" 三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。

模拟 Vue 手写一个 MVVM

2018-10-11
阅读 14 分钟
2.2k
MVVM 设计模式,是由 MVC(最早来源于后端)、MVP 等设计模式进化而来,M - 数据模型(Model),VM - 视图模型(ViewModel),V - 视图层(View)。

浅析 event-loop 事件轮询

2018-10-11
阅读 6 分钟
3.9k
JavaScript 是一门单线程语言,之所以说是单线程,是因为在浏览器中,如果是多线程,并且两个线程同时操作了同一个 Dom 元素,那最后的结果会出现问题。所以,JavaScript 是单线程的,但是如果完全由上至下的一行一行执行代码,假如一个代码块执行了很长的时间,后面必须要等待当前执行完毕,这样的效率是非常低的,所以...

Git 命令总结,从零到熟悉

2018-10-11
阅读 5 分钟
5.7k
Git 是一个免费的开源分布式版本控制系统,它的设计目的是为了速度和效率的处理从小型到大型的项目;Git 可以帮我们管理我们的代码,记录历史,只要代码提交到 Git 上就永久不会丢失,可以随时 “穿越”(回到之前的某一个版本);可以多端共享,团队协作中,多个人操作了同一个文件时,可以实现自动合并(模块化,组件化...

JavaScript 的继承方式及优缺点

2018-10-11
阅读 6 分钟
3.6k
JavaScript 原本不是纯粹的 “OOP” 语言,因为在 ES5 规范中没有类的概念,在 ES6 中才正式加入了 class 的编程方式,在 ES6 之前,也都是使用面向对象的编程方式,当然是 JavaScript 独有的面向对象编程,而且这种编程方式是建立在 JavaScript 独特的原型链的基础之上的,我们本篇就将对原型链以及面向对象编程最常用到...

浅谈 JavaScript 原型链

2018-10-11
阅读 3 分钟
1.6k
在 JavaScript 中有种说法叫 “万物皆对象”,就是说无论是构造函数创建的实例,构造函数本身、原型对象、数组、函数本质上都是对象,都拥有 __proto__ 属性,即隐式原型,所有函数都拥有 prototype 属性,即显式原型(仅限函数),原型对象(prototype 属性指向的对象),在定义函数时就被创建。

封装一个 cookie 功能

2018-10-11
阅读 4 分钟
2.2k
由于浏览器无状态的特性,cookie 技术应运而生,cookie 是一个会话级的存储,用于某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密),通过访问某些服务器而特定携带的存储信息,不支持跨域,在浏览器清空缓存或超过有效期后失效。

前端优化 —— 函数的节流和防抖

2018-10-11
阅读 3 分钟
3.8k
在前端开发当中我们经常会绑定一些事件触发的某些程序执行,有时这些事件会连续触发,如浏览器窗口 scroll、resize,输入框的 keyup、input,以及 click 事件在连续点击时连续发送请求等等,这些情况有些会严重影响前端性能,有些会增加服务器压力,使用户体验大打折扣,而函数节流和防抖就是为了解决这样的问题。

Hexo 中 Markdown 特殊字符的处理方法

2018-10-11
阅读 2 分钟
4.3k
在 Hexo 搭建的博客中对文章进行编写,经常会用到一些特殊字符需要转译,比如 -、.、空格、制表符等等,在正常情况下可以使用 \ 进行转译,但是有一些字符无法转译,使用后在执行 hexo server 命令的时候会报错。