Csy Blog

---

聊一聊前端自动化测试

前言 我们平时会遇到的问题一般是“页面怎么打不开了?”,“点了怎么没反应?”,“为什么没有传这个参数?”,“这个页面的样式怎么没有了?”,这类白屏、操作不可达、提交错误参数、错误渲染等问题有没有办法自动去检测呢? 自动化测试的好处 自动化测试有很多好处,测试最重要的自然是提升代码质量。对于大的项目,有时候需求变更后自测用时比开发用时还要久。尤其是维护长期迭代的业务,开发不太可能在每次修...

深入理解混合对象“类”和原型

1. 混合对象“类” javascript中类和其他语言中的类完全不同。传统面向类的语言中父类和子类、子类和实例之间其实是复制操作,但是在javascript中并没有复制,对象之间是通过内部的 [[Prototype]] 链委托关联的,这样一个对象就可以通过委托访问另一个对象的属性和函数。 多态看起来像是从子类引用父类,但是本质上就是引用。继承的本质是重写原型对象,代之以一个新类型的实例。...

Node.js 12的改变

前言 Node.js 12 2019年10月开始就要进入长期支持版本了,前几天看了Node12的改变,这里做个简单的记录。 更方便地排查问题 堆内存dump 之前一篇博客提到的排查内存泄漏很麻烦的步骤,比如要在生产环境安装额外的模块heapdump。现在,在Node12都做了优化,直接集成了这个功能:smile:。 堆转储功能 Node 12提供了生成堆转储的功能,从而可以更轻松地...

前端存储之IndexedDB

前言 - 前端存储 Cookie 存储空间只有4k,存储时间有限制,每次请求都会带上Cookie,而且最重要的是,Cookie设计之初就不是就是让我们前端存数据用,而是为了让网站验证用户身份用的。 Web Storage 存储空间有5M大小,有永久存储的localStorage和会话期间存储的sessionStorage。对比Cookie优势很明显,但现在web不断发展,5M对于一些...

记录一次 Node.js 应用内存泄露

前言 内存泄漏对于前端的影响通常都是发生在客户端上,而且基本上现代浏览器也会做好保护机制,一般自行刷新之后都会解决。但是,一旦后端内存泄漏造成宕机之后,久而久之整个服务器都会受影响,甚至瘫痪。虽然可以用pm2设置一个内存值上限,超过自动重启,但是知道有问题却一直未解决的感觉太难受了。还是要找到问题的根源,为什么会发生内存泄露?哪个变量发生了内存泄露? 一、什么是内存泄露 1、内存的生命...

Koa洋葱模型与面向切面编程(AOP)

前言 - 什么是AOP AOP又叫面向切面编程,是一种非侵入式扩充对象、方法和函数行为的技术。什么是非侵入式呢?侵入式是需要知道框架中的代码,与框架代码紧密结合在一起。非侵入式是可以自由选择和组装各个功能模块,没有过多的依赖。有很多方式可以增加和合并方法,例如继承、组合、委托。通过AOP可以从“外部”去增加一些行为,在很多情况下,AOP比其他方式更灵活、更少侵入。简而言之,AOP就是在现有...

《重构:改善既有代码的设计 第二版》笔记

该笔记不适合人类舒适地阅读 重构第一步:有一套可靠的测试集,可以借助测试框架配置好这些测试,否则就得耗费大把时间来回比对,降低开发速度。重构精髓:小步修改,每次修改后就运行测试。 重构手法 提炼函数 以查询取代临时变量 从赋值表达式的右边提炼一个函数来 内联变量 改变函数声明 拆分循环 以多态取代条件表达式 以管道取代循环 何时重构 由经...

symbol到底是什么?

前言 Symbol是ES6的特性,现在ES9都出来了。以前看过Symbol,但是这么久都没有用过就渐渐只记得名称了。 MDN上的描述: “数据类型 “symbol” 是一种原始数据类型,该类型的性质在于这个类型的值可以用来创建匿名的对象属性。该数据类型通常被用作一个对象属性的键值——当你想让它是私有的时候。symbol 数据类型具有非常明确的目的,并且因为其功能性单一的优点而突出;一个 ...

nginx之HttpProxy模块

前言 虽然以前配置过几次nginx,因为不常用,一直没有系统的去整理学习过。今天遇到了点问题,感觉之前一直都是似懂非懂,非常有必要做个小结。 当nginx使用了HttpProxy模块,用户的整个请求会在nginx中缓冲直至传送给后端被代理的服务器。默认缓冲区大小等于指令,一般等于页面大小,可能是4K也可能是8K,取决于平台。但我们可以把它设置得更小。如果缓冲区开启,nginx假定被...

Layabox小游戏试玩小结

一、试玩历程 随着微信小游戏的大热,我们组的运营也坐不住了。从18年9月份的时候开始接触Layabox游戏引擎,当时看了一篇文章对比了各大游戏引擎,作者用各种数据安利Layabox,说是目前全球性能最高的HTML5引擎之一。那就来试试吧。 第一个小游戏《玩个锤子》,用TypeScript + Layabox进行开发。 当时layabox官方已经发布了LayaA...