一种易扩展游戏技能系统的实现方案

发表于 | 分类于 游戏

最近在实现一个卡牌类游戏,因此研究了一下卡牌游戏的核心玩法:卡牌技能,并给出一种比较通用的技能系统设计实现,稍作总结。

开发独立游戏需要解决的一些问题

发表于 | 分类于 游戏

做游戏一直是我的夙愿,也是我转行进入软件开发的动机。如今,当我已经有5年的开发经验,准备开发自己的独立游戏的时候,发现这件事远比我想的复杂,本文记录了我关于独立游戏开发的一些思考,以及对未来的展望。

petite-vue源码分析

发表于 | 分类于 源码分析/Vue

最近发现Vue增加了一个petite-vue的仓库。

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

React中封装组件的一些方法

发表于 | 分类于 前端/React

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

管理TypeScript项目中的类型声明

发表于 | 分类于 编程语言/TypeScript

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

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

在React中处理埋点公共参数

发表于 | 分类于 前端/前端业务

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

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

infernoJS源码分析

发表于 | 分类于 源码分析/diff算法

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

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

多项目逻辑复用与monorepo

发表于 | 分类于 前端/前端工程

去年接手了一个新的项目,主要分为了移动端和PC端,在项目初期,两端承担不同的业务职责,在后期迭代过程中,陆续出现了一些相同和相似的业务逻辑,随之而来的是很多相似的代码。

回想之前,也经历过类似的场景,比如从一个to B的项目中再拆分一个to C的项目,两个项目具有业务或平台的差异,但也有很多相同的地方。

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

koa源码分析

发表于 | 分类于 源码分析

本文将分析koa源码中相关实现。

axios源码分析

发表于 | 分类于 源码分析

axios是非常流行的前端网络请求库,本文将阅读其源码,了解内部实现原理,以及axios中核心的拦截器、cancelToken`等实现

snabbdom源码解析

发表于 | 分类于 源码分析/diff算法

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

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

发表于 | 分类于 技术原理

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

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

反思我写过的烂代码

发表于 | 分类于 编程技术

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

ENReflections on the Bad Code I've Written

发表于

I created the draft for this post in October 2017. Every time I got some of it written and considered publishing, it felt like something was still missing. Having now written code for four or five years across projects ranging from simple campaign pages to genuinely complicated business logic, it is time to reflect on the bad code I have written.

Android快速入门

发表于 | 分类于 客户端/Android

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

《面向对象是怎样工作的》读书笔记

发表于 | 分类于 读书笔记

最近阅读了《面向对象是怎样工作的》这本书,感觉还不错,记录一下。

使用cocos实现一个合成大西瓜

发表于 | 分类于 游戏

最近微博上曝出了很多瓜,"合成大西瓜"这个游戏也很火热,玩了一阵还挺有意思的。研究了一下原理,发现目前流传的版本都是魔改编译后的版本,代码经过压缩不具备可读性,因此决定自己照着实现一个。

ReactHooks原理及简单实现

发表于 | 分类于 技术原理

本文从Hooks的基本原理出发,逐步实现简易的useStateuseEffect,代码虽短,五脏俱全。

实现一个Vue右键菜单指令

发表于 | 分类于 前端/前端业务

最近在实现可视化页面编辑器的时候,遇见了需要实现自定义右键菜单的场景,因此本文主要整理了如何在Vue项目中通过自定义指令封装一个声明式的右键菜单的小工具。

前端埋点数据收集及上报方案

发表于 | 分类于 前端/前端业务

最近与后端同学一起完成了项目中数据埋点系统的重构,期间遇见了不少问题,收获颇多,因此记录下来,主要包括:埋点系统的字段设计、在Vue项目中实现声明式数据收集、数据上报等。