Node.js躬行记

Node.js躬行记(25)——Web自动化测试

网页在提测流转给 QA 后,如何能帮他们更有效而准确的完成测试,是我一直在思考的一个问题。 QA 他们会对网页编写测试用例,在提测之前会让我们将优先级最高的用例跑通,这在一定程度上能够避免频繁的返工,保证测试的顺畅。 自己之前想过做 UI 的单元测试,一有修改就跑一遍用例,但是维护成本太高,并且每次 ... »

HTML躬行记(4)——Web音视频基础

公司目前的业务会接触比较多的音视频,所以有必要了解一些基本概念。 文章涉及的一些源码已上传至 Github,可随意下载。 一、基础概念 本节音视频的基础概念摘自书籍《FFmpeg入门详解 音视频原理及应用》。 1)音频 声音的三要素为频率、振幅和波形,即声音的音调、声波的响度和声音的音色。 音频是一 ... »

Node.js躬行记(24)——低代码

低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。让具有不同经验水平的开发人员可以通过图形化的用户界面,通过拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。 低代码的核心是呈现、交互和扩展,其中呈现和交互需要借助自行研发的渲染引擎实现。而此处的扩展特指物 ... »

Node.js躬行记(23)——Worker threads

Node.js 官方提供了 Cluster 和 Child process 创建子进程,通过 Worker threads 模块创建子线程。但前者无法共享内存,通信必须使用 JSON 格式,有一定的局限性和性能问题。后者更轻量,并且可以共享内存,通过传输 ArrayBuffer 实例或共享 Shar ... »

Node.js躬行记(22)——Node环境升级日志

公司之前所有的 Node 项目,其环境都是 8.9.4 版本,发布于 2018 年的一个比较古老的版本。 老版本有两个比较明显的问题: Node 高版本的特性和方法都无法使用。 有些第三方新版本的包无法安装和升级,该包可能依赖比较高的 Node 版本。 之前在开发项目时就遇到第三方包自身的问题,必须 ... »

Node.js躬行记(21)——花10分钟入门Node.js

Node.js 不是一门语言,而是一个基于 V8 引擎的运行时环境,下图是一张架构图。 由图可知,Node.js 底层除了 JavaScript 代码之外,还有大量的 C/C++ 代码。 常说 Node.js 是单线程的,但这个单线程是指处理 JavaScript 的主线程是单的,像 I/O 任务都 ... »

Node.js躬行记(20)——KOA源码分析(下)

在上一篇中,主要分析了package.json和application.js文件,本文会分析剩下的几个文件。 一、context.js 在context.js中,会处理错误,cookie,JSON格式化等。 1)cookie 在处理cookie时,创建了一个Symbol类型的key,注意Symbol ... »

Node.js躬行记(19)——KOA源码分析(上)

本次分析的KOA版本是2.13.1,它非常轻量,诸如路由、模板等功能默认都不提供,需要自己引入相关的中间件。 源码的目录结构比较简单,主要分为3部分,__tests__,lib和docs,从名称中就可以了解到。 __tests__是单元测试,lib是核心代码,docs是文档。在lib目录中只有4个文 ... »

Node.js躬行记(18)——半吊子的可视化搭建系统

我们组维护的管理后台会接到很多开发需求,每次新开页面,就会到处复制黏贴相关代码。 并且还会经常性的翻阅文档,先在书签或地址栏输入WIKI地址,然后找到那一份说明文档,再定位到要看的组件位置。 虽然单人损耗的时间并不是非常多,但还是会打断思路,影响开发的流畅性,当把所有人的时间累加起来,那损耗的时间也 ... »

Node.js躬行记(17)——UmiJS版本升级

在2020年我刚到公司的时候,公司使用的版本还是1.0,之后为了引入微前端,迫不得已被动升级。 一、从 1.0 到 2.0 在官方文档中,有专门一页讲如何升级的,这个用户体验非常好。 一个清单列的非常清楚,内容不多,让我信心大增。并且自己之前也曽依托 umi 2.0开源过一套系统。 所以在实际操作中 ... »

Node.js躬行记(16)——活动配置化

一直想将一些常规活动抽象化,制作成可配置的。原先的计划是做成拖拽的,那种可视化搭建,运营也能自己搭建页面。 这是一个美好的愿景,但是现实不允许我花太多精力去制作这样一个系统。经过权衡后,先设计成一个可配置化的系统。 先对一类常用的打榜活动做定制化的设计,解决当前问题,立竿见影的提升工作效率。 先说说 ... »

Node.js躬行记(15)——活动规则引擎

在日常的业务开发中,会包含许多的业务规则,一般就是用if-else硬编码的方式实现,这样就会增加逻辑的维护成本,若无注释,可能都无法理解规则意图。 因为一旦规则有所改变,那么就需要修改代码再发布代码,而在日常的开发中唯一不变的就是变化,修改规则是很常见的。 规则引擎的作用就是将决策逻辑从业务逻辑中抽 ... »

Node.js躬行记(4)——自建前端监控系统

这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2。将性能和错误量化,解决业务和开发都不知道,只有用户知道的问题,提升业务稳定性。 因为自己平时喜欢吃菠萝,所以就取名 »

strick

Node.js躬行记(12)——BFF

BFF字面意思是服务于前端的后端,我的理解就是数据聚合层。我们组在维护一个后台管理系统,会频繁的与数据库交互。 过去为了增删改查会写大量的对应接口,并且还需要在Model、Service、Router三层写不同的代码逻辑,吃力不讨好。 为了节约开发时间,构思通用接口,并付诸于实际项目中。虽然简化了R ... »

Node.js躬行记(9)——微前端实践

后台管理系统使用的是umi框架,随着公司业务的发展,目前已经变成了一个巨石应用,越来越难维护,有必要对其进行拆分了。 计划是从市面上挑选一个成熟的微前端框架,首先选择的是 icestark,虽然文档中有说明umi框架的改造,但版本得是 3 以上。 而当前我们自己使用的版本是 1,差了整整两个版本。然 ... »

Node.js躬行记(14)——压力测试

  公司有个匿名聊天的常规H5界面,运营向做一次 50W 的推送,为了能配合她的计划,需要对该界面做一次压力测试。   压测工具选择了JMeter,这是Apache的一个项目,它是用Java编写的,所以需要先安装Java的SDK,选择当前的操作系统。     压缩包。      在终端中进入解压后的 bin 目录,通过 sh jmeter 命令来启动 JMeter。       Don't us »

Node.js躬行记(10)——接口日志查询

  当运营向我们上报BUG时,我们第一时间是捕获相关的接口。从监控系统中,就可以查到用户使用时接口的请求和响应数据。   若接口的请求正常,那么就需要深入到接口代码中,查看相关的日志,通常会先浏览数据库查询语句以及内部接口的通信日志。   在本地也可以查看到上述日志,但有个问题,有时候打开某个页面会报错,那是因为本地的数据库没有与测试或正式环境的同步。   可能是有些字段缺失了,也可能是某张表缺失 »

Node.js躬行记(8)——通用接口

一、GraphQL 最近服务端的同事分享了GraphQL,他分享的目的就是要把我们与他们的数据库隔离,这么做我们也求之不得。 我们组目前维护着一个后台管理系统,会直接读取数据库中的表,如果能隔离的话,就不需要写Model文件了。 后面再进一步了解后,明白了服务端推这个GraphQL的用意,其实就是让 ... »

Node.js躬行记(7)——定时任务的进化史

一、纯手工 公司主营的是直播业务,会很许多打榜活动,也就是按主播收到的礼物或收益进行排序,排在前面的会有相应奖励。 纯手工时代,每接到一个活动,就重新写一份,第一次写完。之后就是复制黏贴,再修改,每次活动,测试人员测试也蛮苦恼的。 虽然复制的是之前的代码,已经经历过一轮测试,但手工操作难免会有这个那 ... »

Node.js躬行记(11)——E2E测试

  Cypress是为现代网络构建的前端测试工具,解决了开发人员和 QA 工程师在测试应用程序时面临的关键痛点。   在这个测试框架中包含了E2E测试、集成测试和单元测试(内嵌了Mocha),我们需要的是它的E2E测试的能力。   官网中包含详尽的API接口文档,以及多个视频教程、实例等,只要有耐心,看完文档,上手是不成问题的。   之所以要引入E2E测试,主要是为了保证主流程能够不出错,尤其是在 »