草庐IT

Go语言实践模式 - 函数选项模式(Functional Options Pattern)

什么是函数选项模式大家好,我是小白,有点黑的那个白。最近遇到一个问题,因为业务需求,需要对接三方平台.而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.为此我们封装了一个独立的包xxx-go-sdk以便维护和对接使用.其中核心的部分是自定义HTTPClient,如下:typeClientstruct{}func(c*Client)do(){//实现统一的加密和签名逻辑//统一调用net/http}//订单列表接口func(c*Client)OrderList(){c.do()}//订单发货接口func(c*Client)OrderDelivery(){c.do()}//...其

Go语言实践模式 - 函数选项模式(Functional Options Pattern)

什么是函数选项模式大家好,我是小白,有点黑的那个白。最近遇到一个问题,因为业务需求,需要对接三方平台.而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.为此我们封装了一个独立的包xxx-go-sdk以便维护和对接使用.其中核心的部分是自定义HTTPClient,如下:typeClientstruct{}func(c*Client)do(){//实现统一的加密和签名逻辑//统一调用net/http}//订单列表接口func(c*Client)OrderList(){c.do()}//订单发货接口func(c*Client)OrderDelivery(){c.do()}//...其

大家都能看得懂的源码 - 那些关于DOM的常见Hook封装(一)

本文是深入浅出ahooks源码系列文章的第十四篇,该系列已整理成文档-地址。觉得还不错,给个 star 支持一下哈,Thanks。上一篇我们探讨了ahooks对DOM类Hooks使用规范,以及源码中是如何去做处理的。接下来我们就针对关于DOM的各个Hook封装进行解读。useEventListener优雅的使用addEventListener。我们先来看看addEventListener的定义,以下来自MDN文档:EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上,当该对象触发指定的事件时,指定的回调函数就会被执行。这里的EventTa

大家都能看得懂的源码 - 如何封装 cookie/localStorage/sessionStorage hook?

本文是深入浅出ahooks源码系列文章的第九篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。今天来看看ahooks是怎么封装cookie/localStorage/sessionStorage的。cookieahooks封装了useCookieState,一个可以将状态存储在Cookie中的Hook。该hook使用了js-cookie这个npm库。我认为选择它的理由有以下:包体积小。压缩后小于800字节。自身是没有其它依赖的。这对于原本就是一个工具库的ahooks来讲是很重要的。更好的兼容性。支持所有的浏览器。并支持任意的字符。当然,它还有其他的特点,比如支持E

Vue——Vue初始化【三】

前言今天我们来解密下init.ts中的代码内容,并结合vue生命周期来分析下vue的初始化;GitHubgithubpage内容init.tsimportconfigfrom'../config'import{initProxy}from'./proxy'import{initState}from'./state'import{initRender}from'./render'import{initEvents}from'./events'import{mark,measure}from'../util/perf'import{initLifecycle,callHook}from'./lif

大家都能看得懂的源码 - 那些关于DOM的常见Hook封装(一)

本文是深入浅出ahooks源码系列文章的第十四篇,该系列已整理成文档-地址。觉得还不错,给个 star 支持一下哈,Thanks。上一篇我们探讨了ahooks对DOM类Hooks使用规范,以及源码中是如何去做处理的。接下来我们就针对关于DOM的各个Hook封装进行解读。useEventListener优雅的使用addEventListener。我们先来看看addEventListener的定义,以下来自MDN文档:EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上,当该对象触发指定的事件时,指定的回调函数就会被执行。这里的EventTa

大家都能看得懂的源码 - 如何封装 cookie/localStorage/sessionStorage hook?

本文是深入浅出ahooks源码系列文章的第九篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。今天来看看ahooks是怎么封装cookie/localStorage/sessionStorage的。cookieahooks封装了useCookieState,一个可以将状态存储在Cookie中的Hook。该hook使用了js-cookie这个npm库。我认为选择它的理由有以下:包体积小。压缩后小于800字节。自身是没有其它依赖的。这对于原本就是一个工具库的ahooks来讲是很重要的。更好的兼容性。支持所有的浏览器。并支持任意的字符。当然,它还有其他的特点,比如支持E

Vue——Vue初始化【三】

前言今天我们来解密下init.ts中的代码内容,并结合vue生命周期来分析下vue的初始化;GitHubgithubpage内容init.tsimportconfigfrom'../config'import{initProxy}from'./proxy'import{initState}from'./state'import{initRender}from'./render'import{initEvents}from'./events'import{mark,measure}from'../util/perf'import{initLifecycle,callHook}from'./lif

Ruoyi字典源码学习

此文章属于ruoyi项目实战系列使用目的什么是字典数据:具体的值(0,1,"Y","N"),对应具体的业务逻辑("男","女","是","否")。字典数据不应该只写死在代码中,还应存入数据库,通过管理系统来增删改查。源码分析ruoyi项目在低于3.7.0的版本中,前端字典功能实现比较简单,每个index.vue页面都请求dict的api,获取数据再加工显示即可。3.7.0之后的版本使用了混入,所以复杂了一些。分析入口:查看全局入口文件main.js,DictData.install()是字典功能的入口位置。functioninstall(){Vue.use(DataDict,{//额外参数me

Ruoyi字典源码学习

此文章属于ruoyi项目实战系列使用目的什么是字典数据:具体的值(0,1,"Y","N"),对应具体的业务逻辑("男","女","是","否")。字典数据不应该只写死在代码中,还应存入数据库,通过管理系统来增删改查。源码分析ruoyi项目在低于3.7.0的版本中,前端字典功能实现比较简单,每个index.vue页面都请求dict的api,获取数据再加工显示即可。3.7.0之后的版本使用了混入,所以复杂了一些。分析入口:查看全局入口文件main.js,DictData.install()是字典功能的入口位置。functioninstall(){Vue.use(DataDict,{//额外参数me