实现一个简易的React
发表于 | 分类于 技术原理
前两周一直在学习React源码,发现通过断点观察代码运行流程来理解React源码并不是一个很好的方法:
- 由于需要支持ReactDOM、SSR、React Native等,React源码抽象程度比较高,分支较多,且函数调用栈也很深
- React引入的Fiber Reconciler优化diff流程,内部使用了很多状态码和全局变量
- 我的React开发经验有限,有些API并不是十分熟悉
虽然艰难地将大概看了一些源码,却觉得收获较少,因此决定整理React内相关概念,并手动实现一个简易的React框架,从而更深入地学习React。
webpack折腾记(四):性能优化
之前接手的一个旧项目,使用的是roadhog + dva + antd
等技术,里面大概有上百个路由文件,其他model、组件等文件也不少,导致整个项目的模块文件非常多,热更新和打包都速度都比较慢,输出代码体积也很大。基于这个问题,本文整理webpack常用的一些优化手段。
如何绕开referrer防盗链
最近处理了一个与referer有关的需求,发现里面还是有一点门道的。因此在本篇文章整理了referer相关知识点,主要涉及图片防盗链与如何绕开防盗链限制。
Preact技术栈:router和redux
在上篇文章中对Preact源码进行了分析,了解了Component
、render
、diff
等核心方法,以及页面渲染的大致流程。在这一篇文章中,将分析preact-router的源码实现,并了解在Preact
项目中使用react-redux
的方法,构建一个完整的web应用。
实现一个简单的编译器
发表于 | 分类于 技术原理
在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有
- 将ES6、7代码编译成ES5的代码
- 将SCSS、LESS代码转换成浏览器支持的CSS代码
- 通过uglifyjs、uglifycss等工具压缩代码
- 将TypeScript代码转换成JavaScript代码
- Vue模板语法转换成render函数、JSX语法转换成JS代码
尽管社区的工具如bable
、*-loader
已经帮我们完成了上面的所有工作,我们不用关心编译的过程,甚至也很少有人关注输出的代码,但是了解编译原理还是很有必要的,这篇文章主要用来记录我在学习编译原理时整理的一些笔记。
学习Typescript
发表于 | 分类于 编程语言/TypeScript
最近用TypeScript写了一个游戏,顺道把博客的后端项目也改成了ts版本,下面整理在学习TypeScript时遇见的的问题。
封装Vue组件的一些技巧
写Vue有很长一段时间了,除了常规的业务开发之外,也应该思考和反思一下封装组件的正确方式。以弹窗组件为例,一种实现是在需要模板中引入需要弹窗展示的组件,然后通过一个flag变量来控制弹窗的组件,在业务代码里面会充斥着冗余的弹窗组件逻辑,十分不优雅。
本文整理了开发Vue组件的一些技巧,包含大量代码示例。
HTTPS原理
发表于 | 分类于 网络
HTTP使用明文发送报文,本身不具备加密的功能。这在危机四伏的互联网中是十分危险的。
在阅读了《图解HTTP》第七章之后,整理了一些关于HTTPS的内容,主要内容就是理解HTTPS的原理和工作机制。
Flutter基础知识
最近准备为组里面的小伙伴分享flutter相关的知识,因此对flutter进行了一些整理,主要包括widget、路由、状态管理,以及一些常见的需求处理方案。
《React设计模式与最佳实践》读书笔记
发表于 | 分类于 读书笔记
《React设计模式与最佳实践》这本书是去年双11的时候在图灵社区入手的了,趁着周末看了一遍,对于了解React基础知识,以及编写React组件,还是能学到一些东西的,下面是整理的随书笔记。
理解数据状态管理
发表于 | 分类于 技术原理
在传统的web应用中,用户和数据的状态更多地放在服务端,每一个页面的状态都在路由切换后重新从服务端拉取即可,前端并不需要过多地考虑数据状态的管理。随着单页应用的逐渐发展,前端需要管理越来越多的数据:数据的更新会导致UI的变化,UI的交互会触发数据的更新,多个页面之间可能会共享相同的数据,随着应用的的规模增大,维护起来会十分麻烦。
这篇文章主要整理下几种管理前端数据状态的方案,以及进一步思考其背后的实现和意义。
如何在代码中打日志
发表于 | 分类于 编程技术
之前对于代码中的console.log
一直是比较嫌弃的,以致于提交代码前一般会通过eslint检测是否包含了log输出。
最近一直在处理一个chrome插件的需求,需要打开某个url标签页,然后根据预先设定的操作行为,在页面上进行一些列操作(点击选项卡、选择日期、输入参数等),然后等待页面生成报表,实现自动下载的流程。整个过程较为繁琐,很不方便调试,在开发中使用了大量的console追踪页面的状态和操作行为的结果,逐渐认识到:日志应该是开发和调试中很重要的一环。因此在这里整理一下“如何在代码中打日志”的问题。
关于移动端跨平台框架的了解与思考
发表于 | 分类于 客户端