Hello,欢迎来到每日掘金时间。每日掘金专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!
本文字数 1800+,阅读时间大约需要 6 分钟。
- 【本期每日掘金】亮点:
- TypeScript泛型以及常用的类型编程套路整理
- 原来Spring能注入集合和Map的computeIfAbsent是这么好用!
- 一顿饭的事儿,搞懂了Linux5种IO模型
- ……
筛选规则:文章发布时间在本期「每日掘金」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。
今日主理人
本期每日掘金由 丘山子 负责制作,需要投稿每日掘金请私信我的助理 小岳 。
PS:主理人目前正在招募中,有感兴趣的掘友们可以联系Captain
每日干货
主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。
『前端』
这几天我重温了一下 TypeScript 类型编程,这其实不是一个新的概念了,类型编程在我平时的开发中起到了不小的助力。所以虽然是一个老生常谈的话题,但是我还是觉得有必要写一篇文章和同学们一起回顾一下类型编程。
现在TypeScript在项目中的运用非常多,TS能够焕发生命力的原因有一部分是因为它能提供完善的类型提示和类型检查,能够静态检查出很多错误,提高代码的健壮性。
因此定义好类型是在项目当中发挥TS作用的关键(不然就变成anyScript了),但通常在项目开发当中,仅仅通过简单的类型无法满足我们的需求,需要使用到结合泛型的类型编程。
本文通过源码分析了vant主题切换的原理,知道了桌面端和移动端共享关于主题切换的信息是通过iframe 的postMessage 以及 addEventListener来实现的。我们也知道黑暗模式是通过配置文件中的darkModeClass字段定义的,而vant在使用这个字段的时候采用的是'import from site-desktop-shared'的方式,本文详细分析了这是通过编写vite插件和运行命令调用插件实现的。
puppeteer 是一个自动化测试工具,基本所有浏览器手动的操作都能自动化。
我们用 readline 模块读取用户输入,当输入 download-img 的时候,拿到所有的 p 标签,过滤出链接的内容,把信息记录下来。
自动下载图片并用 image-size 读取图片类型来重命名。
然后输入 upload-next,会通过点击对应 p 标签实现光标定位,然后点击上传按钮来选择图片。
自动化以后的工作流程简单太多了,繁琐的工作都给自动化了,体验爽翻了!
『后端』
设计模式被认为是软件设计的“规范”,但是在互联网快速发展的过程中,也暴露了一些问题。相比过程式代码的简单与易于修改,设计模式常常导致代码复杂,增加理解与修改的成本,我们称之为 “过度设计”。
过度设计是认知提升过程中的必经阶段,用什么语言都一样。一般情况下,我们跟着公司内部的开发规范走,就能在写代码的时候避免大部分坑点,减少代码故障和设计缺陷,但这也无法完全解决过度设计的问题,那么过度设计是怎么产生的,又需要怎么减少呢?
每次代码存在遇到“优雅”的写法时,我都会懊恼自己怎么不会,还吭哧吭哧地写这破代码这么多年了。特别是
Map.computeIfAbsent这个,我感觉没理由我不知道呀。我从初学到现在工作主要用JDK 1.8,没道理我现在才知道写这个玩意。有的时候都感觉我是不是已经是老古董了,新世界已经没有承载我的船了。
不过写开源项目有一大好处是,只要我的项目有人用,能大大提高我获取“优雅”写法的概率,这也是我一直推广自己项目的一个原因之一。
建造者模式的作用不仅限于简化对象构建过程。它还可以使得代码更加易于扩展和维护。通过使用建造者模式,我们可以将对象的创建过程从其他代码中隔离出来,这样就可以避免将对象创建的复杂性融入其他代码中。这样,我们可以轻松地扩展和修改对象构建过程,而不影响其他部分的代码。
大家好,我是小趴菜,今天项目上测试环境,再给领导演示的时候出现了bug,很尴尬。于是我跟前端同学通过模拟请求,最后发现在调一个接口的时候返回了一个 token为空 的错误。
但是前端同学说传了token了,那为什么还会报token为空的错误呢
人在家中躺,肚子饿得响,又到了不得不吃的时候,这顿饭该怎么吃?吃什么呢?
Linux里有五种IO模型:
阻塞IO、非阻塞IO、多路复用IO、信号驱动式IO和异步IO,我发现这五种IO模型,其实能和吃饭这件事关联起来。
📖 投稿专区
大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。