深入 koa.js 源码:架构设计
最近读了 koa 的源码,理清楚了架构设计与用到的第三方库。本系列将分为 3 篇,分别介绍 koa 的架构设计和 3 个核心库,最终会手动实现一个简易的 koa。 koa 的实现都在仓库的lib目录下,如下图所示,只有 4 个文件: 对于这四个文件,根据用途和封装逻辑,可以分为 3 类:req 和 res,上下文以及 application。 req 和 res 对应的文件是:...
最近读了 koa 的源码,理清楚了架构设计与用到的第三方库。本系列将分为 3 篇,分别介绍 koa 的架构设计和 3 个核心库,最终会手动实现一个简易的 koa。 koa 的实现都在仓库的lib目录下,如下图所示,只有 4 个文件: 对于这四个文件,根据用途和封装逻辑,可以分为 3 类:req 和 res,上下文以及 application。 req 和 res 对应的文件是:...
第一章 JavaScript 简介 1.2 js 实现 一个完成的 js 实现由 3 个不同部分组成:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM) 常见的 Web 浏览器知识 ECMAScript 实现的宿主环境之一,其他环境包括 Node、Adobe Flash DOM:是针对 XML 经过扩展用于 HTML 的程序编程 API BO...
其实上周挺丧的,自己安排的学习任务并没有如期完成,还一度产生了放弃某些需求的念头。所以非常感谢同组的前辈和同事们的谈话开导,以及远在头条的伙伴的电话聊天,又对生活和代码充满了热爱(#^.^#)! 所以这两天一直在思考怎么 保持 学习的动力和兴趣,尽量远离拖延症?是的,这里特别强调是“保持”。三天打渔两天晒网很容易,但持之以恒就很困难。 学习不像唱歌跳舞打飞机,给大脑的正向反馈几乎是没有...
这几天基于支持 HTML5 无感认证的 ServerLess 平台开发了一款博客、门户网站等 web 平台常用的 PV 统计工具:page-counter 。主要用到的技术是 js+webpack。 回首看来,解决了以下几个比较有意思的问题: 如何设计代码,用统一的方式支持多个 ServerLess 平台? 如何架构项目,使得其支持 CDN 和 npm 两种方式引入? 如何...
翻译说明 这是一篇介绍现代 css 核心特性的文章,并且借助 sass 进行横向对比,充分体现了 css 作为一门设计语言的快速发展以及新特性为我们开发者带来的强大生产力。 第一次尝试翻译技术文,为了让文章更通俗易懂,很多地方结合了文章本意和自己的说话风格。另外,时间有限水平有限,难免有些失误或者翻译不恰当的地方,欢迎指出讨论。 英文原文地址:https://cathydutton.c...
1. SQL 注入 1.1 介绍 例如做一个系统的登录界面,输入用户名和密码,提交之后,后端直接拿到数据就拼接 SQL 语句去查询数据库。如果在输入时进行了恶意的 SQL 拼装,那么最后生成的 SQL 就会有问题。 比如后端拼接的 SQL 字符串是: SELECT * FROM user WHERE username = 'user' AND password = 'pwd'; ...
问题一览 加载页面和渲染过程 渲染线程和 JS 引擎线程 重绘和回流 页面生命周期 property 和 attribute 区别 cookie、localStorage 以及 sessionStorage AJAX && 跨域 加载页面和渲染过程 题目:浏览器从加载页面到渲染页面的过程。 ① 加载过程 要点如下: D...
背景 在做 cli 工具的时候,非常需要命令行相关的第三方库。一个比较稳健成熟的命令行应该考虑以下 4 种需求: 读取传入的各种参数,例如: –help, -v=123 逻辑处理和友好的 UI 交互,例如:提供列表选择 细致控制字体颜色和背景颜色 状态显示,例如:等待过程前面是转圈圈,完成过程前面自动换成对号 代码仓库地址:play-node-command 。可以...
最近在学习 cluster 的时候,了解到它的负载均衡以及 NGINX 的负载均衡都是基于“轮询调度”算法来实现的。它由 Round Robin 提出,所以又称为“rr 算法”。除此之外,负载均衡使用的是基于权重的“wrr 算法”。为了深入理解,我这里都做了实现。 RR 算法 它的实现思路是:每一次把来自用户的请求轮流分配给内部中的服务器,从 1 开始,直到 N(内部服务器个数),然后再...
需求与思路 一名好的大前端开发人员,一定是一名好的“配置工程师”(滑稽脸)。而最近刚到团队,被安排给 vemoJS 和 cloudbase-cli 写测试用例,并且要保证覆盖率! 这里主要以 vemojs 下的测试用例为主来讲解 Jest 要注意的地方。测试代码在:https://github.com/vemoteam/vemo/tree/master/test 观察 vemojs ...