Replies: 1 comment
-
resolved in v8. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
We can start working on this one after the new product website & learning section went live.
Historically, we started to create a vdom tree which goes down into the deepest leaves (components). Sub-trees get passed as references into their owner components or containers. This approach is very fast & easy for rendering the entire main view (viewport) of an application, since we can directly pass the full tree to the vdom worker.
Once
render()
gets called on the main view, we get the vnode tree (current state) back from the vdom worker and delegate sub-trees to their owners. At this point, delta updates can start. This concept was already implemented before delta updates existed.While the current approach works fine, it has 2 rather big downsides:
cls
andstyle
got a simplified updating logic to bypass the vdom engine (e.g. layout changes).update()
call. While we do have many checks in place to ensure this, these checks are pretty complex and expensive.The new scoped concept mostly affects containers. Instead of having the full vdom sub-tree, we should only inject references. Example:
This way, containers can still take care of adding, removing & sorting child items and take care of layout related css classes.
What are the pros and cons of the new concept?
PRO:
cls
&style
based update mechanics, using the vdom worker as the single source of truth.CONS:
manager.Component
to dynamically resolve reference items and create the full tree. To be clear: We only need to do this once.update()
call on a parent container will no longer be possible.SUMMARY:
The scoped vdom tree should make it simpler for developers to use the neo framework. We have a better separation of concerns and less side effects developers need to think about. Having a focus on blazing fast dom updates => dynamic changes fits very well to the new concept. Of course we will do benchmarking once a PoC is fully functional.
Beta Was this translation helpful? Give feedback.
All reactions