在《JS模块化》系列开篇中,曾提到前端技术的发展不断融入很多后端思想,形成前端的“四个现代化”:工程化、模块化、规范化、流程化。在该系列文章中已详细介绍了模块化的发展及四种模块化规范。本文简单聊聊规范化中的git规范。1规范化在企业级开发中,“一千个读者有一千个哈姆雷特”是很常见的事,每个程序员对技术的理解、视角和掌握程度参差不齐,导致编写的代码五花八门。规范化包括很多,我在企业实践中重点关注两个方面:代码规范和git提交规范。代码规范最基础的是代码格式,不同的代码格式虽然运行起来没有问题,但代码超级难看,代码乱七八糟、一堆warning,虽然不影响运行,但看着太恶心,就像下面的情形:估计是为
本文是深入浅出ahooks源码系列文章的第五篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文来探索一下ahooks是怎么封装React的一些执行“时机”的?FunctionComponentVSClassComponent学习类似React和Vue这种框架,对它们生命周期的掌握都是必须的,我们需要清楚的知道我们代码的执行顺序,并且在不同的阶段执行不同操作的代码,比如需要挂载完成之后才去获取dom的值,否则可能会获取不到相应的值。ClassComponent使用过React的ClassComponent的同学,就会知道其组件生命周期会分成三个状态:Mounti
本文是深入浅出ahooks源码系列文章的第五篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文来探索一下ahooks是怎么封装React的一些执行“时机”的?FunctionComponentVSClassComponent学习类似React和Vue这种框架,对它们生命周期的掌握都是必须的,我们需要清楚的知道我们代码的执行顺序,并且在不同的阶段执行不同操作的代码,比如需要挂载完成之后才去获取dom的值,否则可能会获取不到相应的值。ClassComponent使用过React的ClassComponent的同学,就会知道其组件生命周期会分成三个状态:Mounti
前言我在之前研究文明6的联网机制并试图用Hook技术来拦截socket函数的时候,熟悉了简单的InlineHook方法,但是由于之前的方法存在缺陷,所以进行了深入的研究,总结出了一些有关Windows下x86和x64架构程序的InlineHook方法。本文使用的方法并非最优,也没有保证安全,但是用较少的代码实现了所需的功能,非常适合用来学习InlineHook的基本原理和一般的使用方法。由于本文是在Windows平台下的,所以你需要对Windows系统的机制需要有一定的了解;同时本文的代码基于C语言(当然C++编译器也可以编译),所以你应该要有C语言的基础(尤其是对指针的理解);此外,你还需要
前言我在之前研究文明6的联网机制并试图用Hook技术来拦截socket函数的时候,熟悉了简单的InlineHook方法,但是由于之前的方法存在缺陷,所以进行了深入的研究,总结出了一些有关Windows下x86和x64架构程序的InlineHook方法。本文使用的方法并非最优,也没有保证安全,但是用较少的代码实现了所需的功能,非常适合用来学习InlineHook的基本原理和一般的使用方法。由于本文是在Windows平台下的,所以你需要对Windows系统的机制需要有一定的了解;同时本文的代码基于C语言(当然C++编译器也可以编译),所以你应该要有C语言的基础(尤其是对指针的理解);此外,你还需要
本文是深入浅出ahooks源码系列文章的第十五篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本篇接着针对关于DOM的各个Hook封装进行解读。useFullscreen管理DOM全屏的Hook。该hook主要是依赖screenfull这个npm包进行实现的。选择它的原因,估计有两个:它的兼容性好,兼容各个浏览器的全屏API。简单,包体积小。压缩后只要1.1k。大概介绍几个它的API。.request(element,options?)。使一个元素全屏显示。默认元素是.exit()。退出全屏。.toggle(element,options?)。假如目前是全屏,则
本文是深入浅出ahooks源码系列文章的第十五篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本篇接着针对关于DOM的各个Hook封装进行解读。useFullscreen管理DOM全屏的Hook。该hook主要是依赖screenfull这个npm包进行实现的。选择它的原因,估计有两个:它的兼容性好,兼容各个浏览器的全屏API。简单,包体积小。压缩后只要1.1k。大概介绍几个它的API。.request(element,options?)。使一个元素全屏显示。默认元素是.exit()。退出全屏。.toggle(element,options?)。假如目前是全屏,则
本文是深入浅出ahooks源码系列文章的第十一篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文来讲下ahooks中的useUrlState。通过urlquery来管理state的Hook。useUrlState的特殊在之前的架构篇中我们就提到,ahooks这个项目是一个monoRepo。它的项目管理是通过lerna进行管理的。可以从官网以及源码中看到useUrlState是独立一个仓库进行管理的。也就是你必须单独安装:npmi@ahooksjs/use-url-state-S我认为官方这么做的理由是useUrlState基于react-router的useL
本文是深入浅出ahooks源码系列文章的第十一篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文来讲下ahooks中的useUrlState。通过urlquery来管理state的Hook。useUrlState的特殊在之前的架构篇中我们就提到,ahooks这个项目是一个monoRepo。它的项目管理是通过lerna进行管理的。可以从官网以及源码中看到useUrlState是独立一个仓库进行管理的。也就是你必须单独安装:npmi@ahooksjs/use-url-state-S我认为官方这么做的理由是useUrlState基于react-router的useL
本文是深入浅出ahooks源码系列文章的第九篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。今天来看看ahooks是怎么封装cookie/localStorage/sessionStorage的。cookieahooks封装了useCookieState,一个可以将状态存储在Cookie中的Hook。该hook使用了js-cookie这个npm库。我认为选择它的理由有以下:包体积小。压缩后小于800字节。自身是没有其它依赖的。这对于原本就是一个工具库的ahooks来讲是很重要的。更好的兼容性。支持所有的浏览器。并支持任意的字符。当然,它还有其他的特点,比如支持E