Comments (6)
对于从无到有的数据,update的方法其实慢于setData,不精确的测试的结果是大概170ms vs 200ms这样。
from westore.
对于从无到有的数据,update的方法其实慢于setData,不精确的测试的结果是大概170ms vs 200ms这样。
对于已有的数据呢,因为update每次都需要遍历的diff一遍,然后还需要判断是否当前页面的数据而决定给多少个页面setData。
我这边关心的是diff是否真正有用,因为setData是黑盒,所以假如内部是在jscore的上层就构建virtualDom来diff,来判断哪些传给native层通知webview线程渲染的话,diff后最小颗粒度的setData可能并没有意义
from westore.
我的理解跟你差不多 @WebGuHui
我的理解是,不管 setData 是否经过 diff,page 每次都需要拿到完整的 data 来渲染整个virtualDom,然后此virtualDom和前一个进行 diff。由于 setData 是异步的,我也想不出什么方式才测试性能~
from westore.
update + diff 可以随意操作数据,并且保证小白随意 update 也写不出慢的程序。westore proxy 版本是最终形态,diff都没有,更改数据直接可以拿到 path。
from westore.
稍微研究过小程序在开发工具的appserver代码,setData 是每次操作后把数据放到一个队列的,之后再统一合并,并不会每次 setData 都 render 一次,这个有点类似 react.js 的 setState,所以分开写多个 setData 和一次性 setdata 理论上应该不差多少~~~
只是技术探讨,希望能在项目中尽快集成这么好的东西~~~
from westore.
setData 还是可以写成同步的,利用regeneratorRuntime可以这样写:
setDataSync = async (obj) => {
const that = this
return await new Promise(resolve => that.setData(obj, resolve) )
}
from westore.
Related Issues (20)
- diff.js中_diff函数中,比对基础类型数据时是不是少了一个 = ? HOT 1
- 已经不维护了吗?好多数据错乱的问题,另外omix2库也找不到了。 HOT 2
- 插件如何与小程序通信?
- 原有功能怎么下线了,挺突然,是存在什么框架限制问题吗? HOT 6
- 如果实现状态共享呢? HOT 9
- 新手问题 HOT 1
- westore组件中只要写生命周期的ready,获取不到store HOT 1
- 新手请教:两个页面(页面A,页面B),都require同一个store,如何同步更改、共享store.data呢? HOT 1
- 分享给大家我遇到问题(实际上是我自己菜) HOT 3
- 一点疑问,能否渐进式地接入此框架? HOT 2
- 小程序使用westore时,页面使用mp-form组件遇到的警告
- 请问一个页面如何引用多个store的data HOT 1
- 怎么跨页面使用 HOT 2
- 如何多个页面共享一个store使用 HOT 5
- 【bug反馈】westore.update 没有定义callback HOT 9
- Skyline Support?
- -store里调用this.update()似乎不起作用 HOT 1
- Once again about the update mechanism
- 使用的最佳实践是每个页面都应该有一个store吗?
- westore使用bind方法未及时释放页面实例,导致内存泄露 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from westore.