框架的设计里到处都体现了权衡的艺术
命令式和声明式的差异:
结论:声明式代码的性能不优于命令式代码的性能
理论上:命令式代码会比生命氏代码做到最优的更新性能 但声明式代码的可维护性更强
声明式代码提升维护性的同时,性能会有一定的损失,而框架要做的就是:在保持可维护性的同时,将性能损失最小化
#声明式代码和命令式代码消耗
我们假设直接修改的新能消耗定义为A,把找出差异的性能消耗定义为B 那么公式如下:
- 命令式代码的更新性能消耗=A
- 声明式代码的更新性能消耗=B+A
#虚拟DOM
- 虚拟DOM,是为了最小化找出差异这一步的性能消耗而诞生的
- 虚拟DOM的更新技术性能理论上不会比原声JavaScript操作DOM更高
总结
- 命令式关注过程,声明式关注结果
- 命令式在理论上可以做到极致优化 ,但是用户要承受巨大的心智负担
- 声明式能够有效减轻用户的心智负担,但是性能有一定损失 框架设计者要想办法尽量将性能损耗最小化
- 声明式的更新性能消耗=找出差异的性能消耗+直接修改的性能消耗