We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
view通常可以接受其它参数以决定自己如何展示
我们很难去界定view归属类型,比如是组件、通用、业务等,因为它们之间的身份是可以随时互相转化的,甚至是包含多个类型的。
view
组件
通用
业务
我们可以从另外一个角度来根据更新方式来划分
如果一个view需要的原始数据统一由外部传入,内部仅做加工。这种view就是他驱的,比如通用基础组件等。
通用基础组件
像下拉框,内部并不会去请求接口或其它动作自己去拿数据,而是由参数统一传入。
如果一个view内部会请求接口或其它动作自己去获取原始数据,这种view就是自驱的,比如业务view等。
业务view
view变化的前提条件是数据变化,数据变化后我们需要一定的策略去识别出view变化需要的最小改动,这样更新才能更快。而数据变化中对象是最难的,考虑以下代码
<mx-dropdown *list="{{#object.list1}}"/> <mx-dropdown *list="{{#object.list2}}"/>
要想在list1变化时仅更新第一个下拉框是很难的,以vue为代表的数据响应式就需要提前对数据做代理,这也是一笔性能开销。以react为代表的则是整体更新,除非下拉框告诉react数据有没有变化。
list1
vue
react
这仅是一个示例,项目中的数据会更复杂,比如
<mx-vframe src="../common/picker" *id="{{=user.id}}" *list="{{#goods}}" *picked="{{#cart.selected}}"/>
像这样的数据传递情况,夹杂着嵌套对象时,很难精准识别何时去更新common/picker这个view。这种只发生在他驱更新的情况下,稍不留意就会造成view不必要的更新。
common/picker
他驱
在magix5中,重新做了层更新机制,虽然不会卡顿,但这是一个兜底的方案,不应该在开发中依赖。而应该在开始设计好view之间的嵌套关系,更新机制等。
view之间为什么要传递数据?是因为要共享这份数据,假如我们在另外一个地方存储着这份数据,同时每个view可监听到数据变化,那view之间是不是就不需要传递参数了?不传递参数就意味着view的更新只能是自己驱动,别人是不会引起你的更新的。这样在后期调试代码也更方便。
现在尝试数据store的方案把需要共享的数据统一外部管理,减少view之间的数据传递。
store
并不是所有的view都是这样变化,像通用基础组件这种肯定是他驱的并不适用这个方式。
如果view内部需要去主动获取数据且其它view也可能使用这份数据的时候,那这些view就最好做成自驱的
自驱
The text was updated successfully, but these errors were encountered:
No branches or pull requests
我们很难去界定
view
归属类型,比如是组件
、通用
、业务
等,因为它们之间的身份是可以随时互相转化的,甚至是包含多个类型的。我们可以从另外一个角度来根据更新方式来划分
他驱
如果一个
view
需要的原始数据统一由外部传入,内部仅做加工。这种view
就是他驱的,比如通用基础组件
等。像下拉框,内部并不会去请求接口或其它动作自己去拿数据,而是由参数统一传入。
自驱
如果一个
view
内部会请求接口或其它动作自己去获取原始数据,这种view
就是自驱的,比如业务view
等。更新
view变化的前提条件是数据变化,数据变化后我们需要一定的策略去识别出
view
变化需要的最小改动,这样更新才能更快。而数据变化中对象是最难的,考虑以下代码要想在
list1
变化时仅更新第一个下拉框是很难的,以vue
为代表的数据响应式就需要提前对数据做代理,这也是一笔性能开销。以react
为代表的则是整体更新,除非下拉框告诉react
数据有没有变化。这仅是一个示例,项目中的数据会更复杂,比如
像这样的数据传递情况,夹杂着嵌套对象时,很难精准识别何时去更新
common/picker
这个view
。这种只发生在他驱
更新的情况下,稍不留意就会造成view
不必要的更新。在magix5中,重新做了层更新机制,虽然不会卡顿,但这是一个兜底的方案,不应该在开发中依赖。而应该在开始设计好
view
之间的嵌套关系,更新机制等。变他驱为自驱
view
之间为什么要传递数据?是因为要共享这份数据,假如我们在另外一个地方存储着这份数据,同时每个view
可监听到数据变化,那view
之间是不是就不需要传递参数了?不传递参数就意味着view
的更新只能是自己驱动,别人是不会引起你的更新的。这样在后期调试代码也更方便。现在尝试数据
store
的方案把需要共享的数据统一外部管理,减少view
之间的数据传递。备注
并不是所有的
view
都是这样变化,像通用基础组件
这种肯定是他驱
的并不适用这个方式。如果
view
内部需要去主动获取数据且其它view
也可能使用这份数据的时候,那这些view
就最好做成自驱
的The text was updated successfully, but these errors were encountered: