混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

2020-08-25
阅读 14 分钟
4.3k
本文同步自个人公众号 “JSCON简时空”,欢迎关注: [链接]1. 前言恰逢最近需要编写一个简单的后端 Node.js 应用,由于是全新的小应用,没有历史包袱 ,所以趁着这次机会换了一种全新的开发模式:语言使用 TypeScript,不仅仅是强类型那么简单,它还提供很多高级语法糖,提高编程效率。兼顾 Restful + GraphQL 方式提供数...

JSON Web Token 长文扫盲帖

2020-04-17
阅读 10 分钟
7.4k
本文同步自个人公众号 “JSCON简时空”,欢迎关注: [链接] 本文长约 1w 字,阅读耗时约 20 min 本文要是讲 JWT(JSON Web Token) ,我刚接触这个这个知识点的时候,心路历程是这样的: 啊?Token 是什么? 什么是 JWT?为什么要去用 JWT? 使用 JWT 繁琐不繁琐,怎么用? 那说说看使用 JWT 的风险和收益分别是什么? 如...

图算法 - 只需“五步” ,获取两节点间的所有路径(非递归方式)

2019-09-20
阅读 4 分钟
17.4k
经过一番探索,实现的思路主要来自文章 《求两点间所有路径的遍历算法》 ,只是该文中并没有给出具体的实现细节,需要自己去实现;最终本文的实现结合类似《算法 - 调度场算法(Shunting Yard Algorithm)》 中所提及的双栈来完成。

在 ts + Jest 单元测试中 debugging

2019-09-18
阅读 2 分钟
8.1k
本文简要介绍了如何在 Jest 单元测试中利用 Chrome Node DevTools 来辅助调试 1、背景 代码是 TS 写的 所测功能无 UI 界面,且出现 bug 初步定位到是循环体内部问题,功能较为复杂 用 console 式 debug 效率太低,需要打断点式调试 在 Jest 单测中进行 debugger 目前有两种方法:1. VSCode 提供的 Debugger 功能; 2. Ch...

【源码分析】给你几个闹钟,或许用 10 分钟就能写出 lodash 中的 debounce & throttle

2019-07-23
阅读 13 分钟
5.5k
解读源码一般都是直接拿官方源码来解读,不过这次我们采用另外的方式:从最简单的场景开始写代码,然后慢慢往源码上来靠拢,循序渐进来实现 lodash 中的 debounce 函数,从而更深刻理解官方 debounce 源码的用意。

快速 TypeScript 化 lodash 中的 throttle & debounce 函数

2019-07-23
阅读 2 分钟
13.6k
前两天要写的小工具库(Typescript 语言写的),因其用到 debounce 和 throttle,虽说 lodash 中带了这两个库,可我又不想将整个 lodash 引入,毕竟我仅仅是写一个小工具,将整个 lodash 打包进去不太合适。

Webpack 技巧 - 联合 alias 和 mainFields 提高多库联调效率

2019-07-07
阅读 2 分钟
6k
目前在开发一个工程项目,考虑到可扩展性和功能解耦,将每个功能模块都单独拆分出来。在正式使用、单独维护某个功能包的时候没什么问题,最为头疼的是联调两个功能模块的时候,就比较掣肘了。

【速查手册】TypeScript 高级类型 cheat sheet

2019-04-01
阅读 7 分钟
10.5k
学习 TypeScript 到一定阶段,必须要学会高阶类型的使用,否则一些复杂的场景若是用 any 类型来处理的话,也就失去了 TS 类型检查的意义。

理解 React Hooks 的 Capture Value 特性

2019-03-29
阅读 4 分钟
13.1k
由于刚使用 React hooks 不久,对它的脾气还拿捏不准,掉了很多次“坑”;这里的 “坑” 的意思并不是说 React hooks 的设计有问题,而是我在使用的时候,因为还没有跟上它的理念导致的一些问题。

Node.js - 200 多行代码实现 Websocket 协议

2018-09-21
阅读 10 分钟
14.8k
最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议。到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console 语句后,大约 200 行代码左右。本文记录了实现过程中的经验和总结。

【资源集合】 ES6 元编程(Proxy & Reflect & Symbol)

2018-08-24
阅读 13 分钟
14.3k
几年前 ES6 刚出来的时候接触过 元编程(Metaprogramming)的概念,不过当时还没有深究。今天在应用和学习中不断接触到这概念,比如 mobx 5 中就用到了 Proxy 重写了 Observable 对象,觉得有必要梳理总结一下。

【用故事解读 MobX 源码(五)】 Observable

2018-08-03
阅读 19 分钟
13.7k
================前言=================== 初衷:以系列故事的方式展现 MobX 源码逻辑,尽可能以易懂的方式讲解源码; 本系列文章: 《【用故事解读 MobX源码(一)】 autorun》 《【用故事解读 MobX源码(二)】 computed》 《【用故事解读 MobX源码(三)】 shouldCompute》 《【用故事解读 MobX 源码(四)】装饰器 ...

【用故事解读 MobX 源码(四)】装饰器 和 Enhancer

2018-07-04
阅读 12 分钟
6.2k
================前言=================== 初衷:以系列故事的方式展现 MobX 源码逻辑,尽可能以易懂的方式讲解源码; 本系列文章: 《【用故事解读 MobX源码(一)】 autorun》 《【用故事解读 MobX源码(二)】 computed》 《【用故事解读 MobX源码(三)】 shouldCompute》 《【用故事解读 MobX 源码(四)】装饰器 ...

【用故事解读 MobX源码(三)】 shouldCompute

2018-05-04
阅读 10 分钟
5.7k
================前言=================== 初衷:以系列故事的方式展现 MobX 源码逻辑,尽可能以易懂的方式讲解源码; 本系列文章: 《【用故事解读 MobX源码(一)】 autorun》 《【用故事解读 MobX源码(二)】 computed》 《【用故事解读 MobX源码(三)】 shouldCompute》 《【用故事解读 MobX 源码(四)】装饰器 ...

【用故事解读 MobX源码(二)】 computed

2018-04-08
阅读 9 分钟
8.2k
================前言=================== 初衷:以系列故事的方式展现 MobX 源码逻辑,尽可能以易懂的方式讲解源码; 本系列文章: 《【用故事解读 MobX源码(一)】 autorun》 《【用故事解读 MobX源码(二)】 computed》 《【用故事解读 MobX源码(三)】 shouldCompute》 《【用故事解读 MobX 源码(四)】装饰器 ...

【用故事解读 MobX源码(一)】 autorun

2018-03-12
阅读 14 分钟
19.2k
初衷:网上已有很多关于 MobX 源码解读的文章,但大多阅读成本甚高。本人在找文章时对此深有体会,故将以系列故事的方式展现源码逻辑,尽可能以易懂的方式讲解 MobX 源码;

Promisify 的源码解析

2017-02-25
阅读 7 分钟
5.8k
参考文档 升级bluebird 3后Promise.promisify的函数回调参数问题:3中的使用方法和2还是不一样的 How does Bluebird promisify work?:源码讲解promiify的内部机制; Optimizing for V8 - Inlining, Deoptimizations:V8优化相关内容文章 Promise.promisify:官方API文档 1. 简述 使用过 Bluebird 的都知道 promisify 这...

Webpack 源码(二)—— 如何阅读源码

2017-01-09
阅读 2 分钟
10.3k
如果想要了解 Webpack 的流程,只要阅读 @七珏 细说 webpack 之流程篇 所述的内容就够了,讲解地比较全面了;本文就不对 Webpack 流程再做重复的描述,而是从另外一个角度补充分析 Webpack 源码;

Webpack 源码(一)—— Tapable 和 事件流

2017-01-09
阅读 10 分钟
24.8k
1、Tapable Tap 的英文单词解释,除了最常用的 点击 手势之外,还有一个意思是 水龙头 —— 在 webpack 中指的是后一种; Webpack 可以认为是一种基于事件流的编程范例,内部的工作流程都是基于 插件 机制串接起来; 而将这些插件粘合起来的就是webpack自己写的基础类 Tapable 是,plugin方法就是该类暴露出来的; 后面我...

Webpack实战 - 使用动态 entry 改善调试体验

2017-01-09
阅读 4 分钟
15.2k
webpack 的优势不言而喻,因此在实际应用中我们也常常使用它调试 多入口 应用,所谓 多入口 是指多个HTML页面会使用多个入口文件,在官方教程 MULTIPLE ENTRY POINTS 介绍了如何配置: