petite-vue源码分析

最近发现Vue增加了一个petite-vue的仓库,大概看了一下,这是一个无虚拟DOM的mini版Vue,前身貌似是vue-lite(瞎猜的~),主要用于在服务端渲染的HTML页面中上"sprinkling"(点缀)一些Vue式的交互。颇有意思,于是看了下源码(v0.2.3),整理了本文。

阅读全文

React中封装组件的一些方法

最近参与了一个基于Raact技术栈的项目,距离我上一次在工作中React已经过去了挺长一段时间,因此打算整理在React中封装组件的一些方法。

阅读全文

管理TypeScript项目中的类型声明

说来惭愧,最近才正儿八经地在生产项目中使用TypeScript,遇见一个比较棘手的问题就是:如何管理项目中定义的各种类型声明。

本文将从TS项目和声明方式开始,探究如何解决该问题。

阅读全文

在React中处理埋点公共参数

前端埋点数据收集及上报方案这篇文章中研究了前端项目的数据埋点方案,描述了埋点字段设计、数据收集和数据上报的一些思路,并给出了在Vue中通过自定义指令和全局Mixin实现声明式数据收集的方法。同时在项目中使用一段时间后,总结了一些可以优化的问题。

最近在一个React项目中,打算实现类似的工作,同时解决之前遗留的问题。

阅读全文

infernoJS源码分析

inferno.js是性能最快的前端UI框架之一,Vue3的diff算法貌似也从Vue2的snabbdom实现修改为类似于infernod的实现。

本文主要通过阅读inferno的核心源码,了解其关于通过最长上升子序列优化diff DOM性能的原理。

阅读全文

多项目逻辑复用与monorepo

去年接手了一个新的项目,主要分为了移动端和PC端,在项目初期,两端承担不同的业务职责,在后期迭代过程中,陆续出现了一些相同和相似的业务逻辑,随之而来的是很多相似的代码。回想之前,也经历过类似的场景,比如从一个to B的项目中再拆分一个to C的项目,两个项目具有业务或平台的差异,但也有很多相同的地方。

本文主要研究通过monorepo来处理这种多项目中逻辑复用问题。

阅读全文

snabbdom源码解析

最新在梳理一些前端框架的核心实现,关于diff算法这一块,发现目前大部分文章都是将源码翻译一遍,而关于诸如“为啥要定义多个游标”、”首尾对比”等细节,并没有给出比较好的解释。因此打算整理snabbdom源码,同时回答前面提到的一些问题。

阅读全文

支持Redux在WebStorm中像Vuex一样智能跳转

之前的负责项目是用vue写的,vuex是专门为vue定制的,上手十分容易,由于是官方统一维护,webstorm在2020版本也已经支持直接从type字符串跳转到对应module定义。

最近有新项目打算统一使用React技术栈,研究了一下目前React状态管理主流方案,还是redux/mobx之类的,由于redux默认的combineReducers功能比较弱,且webstorm貌似不支持字符串type直接跳转到reducer定义,比较影响开发效率,因此决定研究一下相关的解决方案。

阅读全文

反思我写过的烂代码

这篇博客的草稿是17年10月15号创建的了,每次写了些东西打算发布的时候,总觉得还差了什么。现在写了四五年代码了,经手了很多项目,有简单的活动页面,也有很复杂的业务逻辑,是时候反思一下我写过的烂代码了。

阅读全文

Android快速入门

距离上一次写Android代码已经过去了三四年了,基本上都忘得差不多了,最近在尝试使用kotlin开发一个App,发现查询很多资料都不太全,浪费了大量的时间,因此决定整理一篇在Android入门中经常遇见的需求和问题,希望能对刚接触Android的朋友有一点帮助。

阅读全文