# FE Design
# MVVM
M: 模型数据
V: 视图
VM: 为可以在UI上执行的数据和操作的表示。它不是UI的表示,也不是数据Modal(模型),而是一个用于保存用户正在使用且尚未保存数据的层。
MVVM的一个缺点是在ViewModel和View之间需要进行解释,这会带来性能成本。解释的复杂性也是可以变化的:他可以像复制数据一样简单,或是像View所看到的那种形式进行操作一样复杂。MVC没有这种问题,因为整个Model都是可用的,这种操作是可以避免的。
优势
- 关注点分离
- MVVM使得UI和为UI提供驱动的行为模块的并行开发变得容易
- MVVM使得View抽象化,从而减少代码背后所需的业务逻辑量
- ViewModel在单元测试中的使用比在事件驱动代码中的使用更加容易
- 不需要考虑UI自动化和交互就可以测试ViewModel
不足
- 对于简单的UI来说,使用MVVM有些大材小用
- 数据绑定可以是声明式的,使用也很方便,但比命令式的代码更难调试,在命令式的代码中,我们只需要设置断点
- 大型应用程序中的数据绑定可以产生大量的标记。我们不想看到的情况是:绑定比被绑定的对象还要繁重。
- 在大型应用程序中,预先设计ViewModel可能更加困难