函数柯里化

函数柯里化是一种关于函数的高阶技术,它不仅用于JavaScript,还被用于其他编程语言。 柯里化是一种函数的转换,它是指将一个函数从可调用的f(a, b, c)变为f(a)(b)(c) 。柯里化不会调用函数,而是返回一个对其进行转换后的版本。

函数柯里化
CSS选择器优先级

一文牢记CSS选择器优先级,不再遗忘

CSS选择器优先级
V8引擎中的Ignition和TurboFan

V8引擎的即时编译(JIT)策略显著提高了从JavaScript生成可执行代码的速率(编译器TurboFan的功劳),我们有必要对这个机制有基本的认识,从而避免写出一些影响性能的代码。

V8引擎中的Ignition和TurboFan
重新学习TypeScript(基础)

TypeScript已经取代直接使用JavaScript,成为中大型前端项目开发的首选语言。一句话,静态类型写起来就是爽!鉴于自己从业以来并没有系统性地跟随某项课程学习过TypeScript,对其的了解是从项目和文档中逐步获取的,因此在知识体系方面可以说是比较差劲,因此有必要系统性地去重新学习一遍TypeScript。

重新学习TypeScript(基础)
Webpack上手(入门)

本文首先从Webpack开始,再认识一下这个前端程序员的老朋友。今天几乎所有前端项目都会采用TypeScript开发,采用模块化的代码组织方式,使用React这样的单页应用框架。在工作中我接触到的几乎所有项目都选择Webpack作为构建工具。Webpack本身也有着优秀的设计思想,抛开工具用途外,也很值得我们每一个程序员学习。

Webpack上手(入门)
Macbook pro观看4K HDR电影

漫威有一阵子没出啥好片了,最近又找老片看。网上4k hdr的电影资源比较难找,家里网速也一般。因此转向了Disney+,淘宝随便买个会员共享号非常划算。这里记录一下怎么使用Disney+看4k hdr的资源。

Macbook pro观看4K HDR电影
leaflet做线条吸附效果

笔者在某电动三傻自驾中心地图部做前端开发工作,主要内容是基于leaflet开发一些供公司内部使用的地图工具平台软件。在工作中遇到几次需要在地图上实现将某个绘制的线条(polyline)吸附到最近的某条线条(polyline)上的功能。这里总结一个比较通用的,较为基础的方案,方便后续遇到类似问题能够快速解决。

leaflet做线条吸附效果
好剧推荐——C.S.I.犯罪现场调查

C.S.I.(犯罪现场调查)是一部极为经典的犯罪题材美剧,讲述了鉴证科成员们遇到的各个离奇案件,每一桩案件背后都有形形色色的故事。虽然是老剧了,但是精彩程度和耐看程度没得说。

好剧推荐——C.S.I.犯罪现场调查
手写JS深拷贝

JavaScript并没有提供深拷贝的标准API,虽然在开发中深拷贝的场景并不很常见,但是手写JS深拷贝函数却是前端面试中常见的问题。

手写JS深拷贝
Intersection Observer API

最近参加了字节的面试,二面面试官问了一个关于如何判定当前元素进入用户视口的问题。当时回答并不能让面试官满意。事后查阅了文档,知道了Intersection Observer API,它提供了元素可见检测的好方法。

Intersection Observer API
弹性盒子布局基础

弹性盒布局(flex)是现在前端最常用的布局方式,它在桌面和移动端都适用。了解flex容器和flex元素的基本概念有助于正确适用弹性盒模型。

弹性盒子布局基础
关于no-cors的误区

在读书的过程中突然发现fetch API中有一个”no-cors”选项,感觉容易引发误解,后找到一篇不错的文章翻译在这里。

关于no-cors的误区
防抖和节流

防抖和节流是前端事件驱动编程中常用的概念,也是面试中经常问起的八股。当然,面试中手写基本的防抖和节流也是常考的。

防抖和节流
V8引擎中的对象属性访问

工作中遇到同事讨论JS里面属性访问的速度比较,有人认为用”.”访问比”[]”语法访问更慢。当然最后发现是没有区别的,不过这也让我们好奇浏览器是怎么加速JS的属性访问的。

V8引擎中的对象属性访问
手写一个Promise

手写Promise是前端面试经常考察的点。实际上只要熟悉Promise A+规范,并不很难,一般面试也不要求写得很全。

手写一个Promise
使用ESLint、Prettier统一团队代码

做前端开发快一年了,经历过两三个团队,感觉大家都不很重视代码规范。前端代码写起来很灵活,各个项目也不同。但是在同一个代码库上lint和style应该统一,这样可以保持代码规范、减少冲突。

使用ESLint、Prettier统一团队代码
浏览器缓存

其实前端缓存理解起来很容易,虽然在日常开发中并不经常遇到缓存引起的问题,但是面试八股中出现频率还是比较高的。

浏览器缓存
ROS基本概念

笔者最近上岗一份自动驾驶可视化工具开发的工作,需要针对ros生态做一些可视化。ros是当前流行的机器人操作系统,实际上是一套通信框架。这里先了解下ros的基本概念。

ROS基本概念