分析
CellEvaluator
最基础的计算: CellEvaluator, 做两件事:
- 递归(或非递归) 地计算 cell 公式, 返回 {id: ParsedResult}, 并记录 know 和 results
- 如果 cell.value<>oldCell.value, 则 propagate 到相关单元格(hostCell) 每个单元格执行 1 最终得到的 results: {id:ParsedResult} 即是最终结果, 注意可能影响很多单元格
两种应用场景: 场景 1: 递归重算, 比如 全部重算 & 增删行列 场景 2: 简单计算, 比如 在全部重算完成后, 重新输入一个新公式
对外提供两个方法: // 初始化 const ce = new CellEvaluator(state) // 重算 ( 一般不单独使用 ) ce.evaluate(recursive?:boolean); // 传播 (什么时候用: 如果只是简单输入了 3 这样的 value, 则仅需 propagate) ce.propagate(recursive?:boolean); // 重算并传播 ( 除开上面的用法 ) ce.evaluateAndPropagate(recursive?:boolean); // 获取最终结果, 并重置 results/know ce.getResults(): {id: ParsedResult}
SheetEvaluator
内部包含一个 CellEvaluator 仅需 简单地, 对每个 cell 调用 evaluateAndPropagate, 获取最终 results
特性
- 基于
typescript
, 生成es5
目标文件 - 支持
jest
, 直接在src
目录下*.test.ts
, 然后yarn test
何时使用
- 你希望创建一个可重用的工具方法库(我们通常叫
utils
) - 希望使用
typescript
- 这个库通常可同时供
node
端与browser
端使用 - 也许你还希望发布到
npm
如何使用
git clone https://github.com/g770728y/create-utils-library.git <your-project-name>
vi ./package.json <== 修改package.json中的project信息
yarn
yarn start
以watch
模式动态构建
yarn test
以watch
模式动态测试