主页

命令模式

概述Command 命令模式通过将请求封装为命令对象,因此可以让系统参数化处理请求,包含排队、日志、撤回功能。它又被称为 Action 或 Transaction。与过程化的请求调用不同,命令对象在程序中会有更长的生命周期,我们可以在程序运行的任意时刻访问命令对象,且命令对象可以被四处传递。 命令对象将请求的发送者和请求的接收者与请求本身解耦,因此其设计与实现的焦点在于命令对象。假想有一个包含一堆

模板方法模式

概述TemplateMethod 模板方法模式即由父类定义算法逻辑骨架,由子类提供具体逻辑步骤的实现。 《设计模式:可复用面向软件的基础》讨论了以下案例:应用框架 Application 类负责打开一个外部存储的文档,应用就会将文档表示为 Document 对象。基于 Application、Document 框架,实现具体逻辑的子类如绘图应用中的 DrawApplication、DrawDocu

组合模式

Composite 组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。因为使用了树形结构,组合模式使单个对象和组合对象有使用一致性。比如在图形编辑器或图形捕捉系统中,可以采用宜搭似的设计方案,Input、Textarea、Text、Line 等作为普通图元,Row 等作为这些图元的容器 Container,在容器和图元两层中,容器层具有添加图元的接口,图元没有,这样两者没有使用一致性,

babel 处理流程管窥

原理babel 处理三步骤:parse 解析、transform 转换、generate 生成。 解析过程基于 @babel/parser 做词法分析、语法分析。词法分析将源程序解析成令牌流;语法分析将令牌流转换成 AST。 转换过程基于 @babel/traverse 遍历 AST,对节点进行添加、更新及移除等操作。此时插件将介入工作。 生成过程基于 @babel/generator 深度遍历

html5

功能检测功能检测有四种方式: 检测全局对象(如 window、navigator)上是否有某属性,示例:geolocation 功能检测 创建一个元素,检测它是否包含某属性,示例:canvas 功能检测 创建一个元素,检测它是否包含某方法,示例:vedio format 功能检测 创建一个元素,为它设置属性,检测这个属性值是否发生改变,示例:input type 功能检测 DETECTING

编译原理踩点

基础及前言编译器由 analysis 分析(也称为前端部分)、synthesis 综合(也称为后端部分)两部分构成。编译器执行的各 phase 步骤如下: 词法分析 lexical analysis:将字符流源程序解析成 token 词法单元。这一部分将收集源程序的变量信息,并存入 symbol table 符号表。 语法分析 syntax analysis:构建词法单元的语法结构 —— syn

TreeSelect 组件

基于 rc-select 中的 generate(options) 提供下拉框处理逻辑,rc-tree-select 实现了自己的 OptionList、Selector 组件以及 internalProps 处理函数。

事件模块

标准的现代浏览器为事件提供了 addEventListener、removeEventListener 等接口。 addEventListener 将事件监听器注册到 EventTarget 对象上,而 Node 接口继承了 EventTarget。事件监听器的 this 指向触发事件的元素引用。addEventListener 可以通过 capture 选项设置是否在捕获阶段执行(默认在冒泡阶段

节点、属性、样式模块

节点、属性、样式在 DOM 接口或节点操作类库或 MVVM 框架中都是相互独立的模块,模块之间边界清晰,模块与环境之间通过几个主要接口进行通信,没有错综的关联线条。其处理的复杂度在于,模块内部需要对节点类型、属性、样式的多样性以及兼容性问题作出处理。针对多样性的一般处理手法是对共性进行归类(制作不同的编程接口,或制作不同的类以加区别)、对个性进行特殊处理(通过 hooks 留口子以应用 map 映

电商后台系统产品逻辑全解析笔记

马士华《供应链管理》 电商后台产品架构 商品中心:主要管理SKU(最小库存单位)、SPU(标准化产品单元)、属性(关键属性、非关键属性、销售属性)、类目品牌、价格等有关商品的数据。 订单中心:管理订单类型、订单状态,收集关于商品、优惠、用户、收货信息、支付信息等一系列的订单实时数据,进行库存更新、订单下发等一系列动作。 支付中心:管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号、支