MarkZhang Blog

Thinking、Communicating、Recording、Using

回顾2019,展望2020

review 2019,start 2020

今天是2020年1月12号,天气晴~ 昨天刚从北京参加公司年会回来,坐在高铁上感慨时光飞逝,不舍昼夜;所以在好好睡一觉之后,决定对自己过去的2019进行一下总结,也给已经到来的2020定几个小目标,生活嘛,总是需要盼头的,不能只是遮住双眼一门儿心思的往前奔。(自己老是把总结,复盘挂在嘴边,但是自己做得确很少;这篇总结也算是鞭策自己要多干实事儿)。 工作方面:身处业务部门,这一年主要还是写了...

由mergeSort引发的一些思考

mergeSort thinking

重新梳理一下归并排序以及一些相关的东西。 对于归并排序大家如果需要回忆下是个什么东西的话,可以点击这个链接,里面有各种排序的动画演示以及讲解,比我再用文字赘述一遍要好得多,功能相当强大。 先给出归并排序的js代码实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

想进一步认识一下preact

learn preact deeply

react不是先构建dom tree,再把这棵树渲染到页面上 是边构建dom tree节点的时候边把节点渲染到了页面上 jsx是调用React.createElement生成react节点 这个语法转换是babel完成转换的 因为在书写react代码的时候,组件层级节点组织关系已经确定了,所以在后面生成dom tree的时候整棵树的构建过程是很自然的,因为每个节点它有哪些兄弟节点,以及...

需求开发回顾

review a requirement development

目标、结果、分析、总结 最近接手了一个活动玩法需求,由于在评审、开发、测试过程中存在一些问题,导致这个项目延期上线;所以个人觉得有必要进行复盘和总结,避免在后续的需求开发中遇到类似的问题,再掉进坑里。 需求评审 作为前端开发,在需求评审之前应该仔细阅读产品出的需求文档和交互图,对照测试同学的测试用例过一遍整个需求。 对于不确定的点一定要记录并和产品确认下来(邮件和内部沟通工具进行确...

koa2一部分源码解析

koa2 source code analysis

从18年下半年以来开始涉足node开发以来,算起来使用koa2也快接近一年了。在使用koa2过程中对于项目由陌生到熟悉,于是想着写一篇总结来归纳自己对于koa2的理解和认识。 这篇文章会分析以下四个模块:中间件机制、request对象、response对象、context对象。 中间件机制 我们通常在项目是通过以下方式来使用中间件的 1 2 3 4 let bodyParser = re...

我是如何把node接口耗时降低23%的

Node Time-Consuming

在我所在的团队Node主要是用于提供接口数据和页面渲染。既然文章标题是和node接口耗时相关的,我先讲一下我们node是如何做接口数据提供的。 前端页面要想拿到数据,主要会经历三层,node->后端->核心数据。这三层都是属于内网调用,互相之间各有nginx进行调度。 所以从以上三层结构来看,想要提升node接口耗时,就是对内(node自身)处理逻辑和对外(后端及核心数据)...

前端项目开发:打包📦

FE Project, Build

这篇文章顺着上上篇文章开头的思路梳理关于webpack打包服务的细节。 对于前端打包总的来说就是拿到入口,分析入口文件里面的各种依赖,找到依赖,聚合依赖,输出一个文件。 webpack是一个打包工具,按照它规定的写法和配置能帮助我们实现上述功能。webpack的配置很多,但是我们常用的配置并不是很多,我们书写配置是为了告诉webpack在打包的每一个环节中应该如何去执行(比如查找文件的过...

前端项目开发:代理🚀

FE Project, Proxy

上一篇文章大概讲述了js项目开发的整体流程,在这篇文章中我们着重讲解关于代理的部分。 先整体讲一下关于代理的过程: 首先我们先用express(当然也可以是其他的node服务框架)在本地启动一个server服务。 将静态资源的host映射到本地,比如测试环境静态资源网址是m.asset.com,那么可以使用修改host的工具switchhost修改m.asset.com的host...

前端项目开发:代理和打包

FE Project, Proxy, Building

在项目开发过程中,我们一般是在本地书写js代码,待到书写完毕之后进行打包然后放到测试环境中运行。当我们想要修复和验证一个bug的时候,我们又需要在本地修改代码打包然后放到测试环境运行,观察效果。 这样每次打包上传很麻烦。那有没有办法不用上传即可看到效果呢? 有……我们可以使用Fiddler、Charles等代理软件,将测试环境中的文件和本地文件作映射,这样测试环境中跑的代码就是本地编写的...

一些常用的工具函数合集

some tool functions

拍平数组: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 let flatten1 = (arr) => { return arr.reduce((prev, cur) => { return prev.concat(Array.isArray(cur) ? flatten(cur) : cur); }, []...