首页
Avennn的博客
取消
Preview Image

Typescript 5.2 Beta发布,带来全新的using声明

这些年typescript发展得如火如荼,从它的发展路线来看,它不单单弥补了js在类型方面的缺陷,还超前带来许多新的语言特性。今年6月底,typescript 5.2 Beta发布,其中带来了很重要的一个特性:using声明,方便我们对资源进行管理。 背景 编程的世界需要管理很多资源,这些资源使用完之后需要及时释放,比如数据库操作完之后断开连接、文件open并操作完后要close掉、线程...

Preview Image

Typescript系列:索引访问类型

假设我们有一个用户管理系统,用户的信息通过以下格式存储: interface User { name: string; phone: number; address: { country: string; province: string; city: string; postalCode: number; } } 这时,我们想获取用户a...

Preview Image

Typescript系列:type vs interface

相信很多使用ts开发过业务的同学经常将type和interface当作同一个东西替换使用。诚然,两者有一些共同的点,让它们在很多情况下可以替换使用而不会出问题,但实际上它们是完全不同的两个东西。 本文带大家了解type和interface的所有区别,让大家能够快速判断出到底用type还是interface。 概念不同 interface只是用来描述对象的形状,不能用来描述string等...

Preview Image

Typescript系列:类型断言

语法 值 as 类型 或者 <类型>值 具体如: interface Foo { a: number; b: string; } const foo = {} as Foo; // 或者 // const foo = <Foo>{}; foo.a = 1; foo.b = 'hello'; <Foo>这种写法跟jsx语法有冲突,...

Preview Image

带你了解JS引擎的性能优化手段:Inline Caches

最近在学习React的时候无意中了解到JS引擎有一项性能优化手段叫Inline Caches,顿时产生浓厚的兴趣。于是研究了一番,并整理成文。 JS执行过程 目前市面上所有的JS引擎包括Chrome的V8、Mozilla的SpiderMonkey、微软的Chakra以及苹果的JSC,它们执行JS代码的过程都是类似的。 首先,JS源码经过解析器(Parser)的词法分析和语法分析,生成抽...

Preview Image

深入学习React的合成事件

作为前端开发者,我们对浏览器事件再熟悉不过了,它的传播会经过捕获和冒泡两个阶段。jquery对于事件的处理比较容易理解,通过一定的封装去适配不同的浏览器,让开发者使用起来更方便。而React对事件的处理就没这么简单了。 React合成事件(SyntheticEvent)是浏览器原生事件的上层封装。SyntheticEvent和原生事件有类似的结构,比如都有stopPropagation和p...

Preview Image

React项目里我们不用担心XSS攻击吗?

React这个前端框架大家都很熟悉,但或许很多人不知道它能防御XSS,又或许知道但印象不深。直到最近,我才重新了解到React有这个能力。于是我会想,React是如何防御XSS的?我们在项目里用上了React就不用关注XSS攻击了吗?这篇文章将会逐一回答。 什么是XSS Cross Site Script,跨站脚本攻击,为了区分层叠式样式表(Cascading Style Sheet,C...

Preview Image

聊聊浏览器中宏任务的优先级

这篇文章源于我之前写过的一篇关于MessageChannel的文章,里面举到一个例子: setTimeout(() => { console.log('setTimeout') }, 0); const { port1, port2 } = new MessageChannel(); port2.onmessage = function () { console.l...

Preview Image

原来VSCode CLI这么有用

说到VSCode CLI工具,可能大家比较陌生,因为在日常工作中它不是必须的。但鉴于它有些功能还比较实用,并且最近我在技术上的一些想法刚好可以借助它来实现,所以这篇文章就来聊聊VSCode CLI那些实用的功能。 VSCode CLI的shell命令叫做code,后面都会用code来指代VSCode CLI工具。 code实用功能 打开最近一个会话 code后面不带任何选项或参数执行...

Preview Image

报告:我想拦截浏览器的请求

不知道大家平时有没有遇到这样的需求:拦截浏览器的请求。这里说的拦截,是指在客户端(浏览器)的拦截,因为如果是服务器的拦截,那么请求就已经发出去了,这可能并不是我们想看到的。 最近,我在搭建组件库文档平台,部分业务组件里深度封装了一些数据请求,又或者埋点上报,这就产生了几个问题: 跨域问题的报错; 文档不关心埋点是否上报,只关心组件是否正常显示,组件使用假数据就能满足要求; ...