creationix / domchanger Goto Github PK
View Code? Open in Web Editor NEWdombuilder that applies diffs only to the real dom
dombuilder that applies diffs only to the real dom
Hello. Your library looks stunning minimalist. I would like to try to use it in one of my works, but I need to be able to get a static html-code as a string on the server. Is it possible?
split from #4
IMO, there are a couple issues with components.
render
is called as both a pseudo-constructor to inject params into the component's closure as well as a refresh re-renderer.
Components are not instanced, so no reference to them exists, this prevents exposure of any public api. eg not possible:
return {
render: render,
someAPIMethod: foo,
somePublicProp: bar,
}
Pre-instantiated components cannot be provided into a tree.
The top-level .update()
method acts as a constructor for the entire component tree and must accept params for all its sub-components.
For 1, maybe expose a render:
and separate init:
.
For 2, creating instances will allow for an API to be exposed for each component.
For 3, components can be externally created using their own init
s and inserted into their parents via the parent's init
(dep injection).
For 4, should be a non-issue if the others are implemented.
I don't know how much of this is do-able and would bloat/complicate the framework, so consider these wishes :)
Any plans to publish to NPM?
Hi, great library, I love the focus and clarity!
I threw together a simple higher order component to connect and bind Redux actions & state to props with updates in DomChanger.
Hey,
I have found an issue that cleanup will not be called though a component will be removed from the tree and replaced with a new one (same type but new instance)
please have a look at some sample code: http://jsfiddle.net/BsUDE/9/
In the output it should be 1,2 not 0,2
this can cause leaking of resources (eg if I would setInterval in the component)
Hi @creationix,
In the example (and fiddle), if you check, then uncheck "Only show products in stock", console gives TypeError: Argument 1 of Node.appendChild is not an object.
(domchanger.js, line 157). iPhone 5
doesn't re-render at all and Basketball
re-renders under Electronics
.
Looks like a diffing strategy error?
thanks!
Leon
Hi,
How would you suggest to handle a case when you need to interact programatically with an element or component after it is rendered. For example rendering a <textarea>
with a value and setting the cursor position or selection range within it after it has been rendered?
Is there a post-render hook that provides a reference to the element's node to allow for this?
thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.