- From: Olli Pettay <Olli.Pettay@helsinki.fi>
- Date: Wed, 27 Apr 2011 18:33:40 +0300
- To: Rafael Weinstein <rafaelw@google.com>
- CC: public-webapps@w3.org
HI Rafael,
few random comments, or mainly just random questions :)
On 04/23/2011 03:35 AM, Rafael Weinstein wrote:
> Myself and a few other chromium folks have been working on a design
> for a formalized separation between View and Model in the browser,
> with needs of web applications being the primary motivator.
>
> Our ideas are implemented as an experimental Javascript library:
> https://code.google.com/p/mdv/ and the basic design is described here:
> http://mdv.googlecode.com/svn/trunk/docs/design_intro.html. It's not
> complete and there are things we're not happy with, but it's
> self-consistent enough that you can start to imagine what a full
> design might look like.
>
> We hope to get others interested in collecting requirements/use cases
> and fleshing out a good solution.
Would be good to know what are the use cases you had in mind.
>
> We're starting the discussion here because a few people in this group
> from whom we got early feedback felt that it would be most appropriate
> place and, further, that this work bears some relation to XBL.
Not sure why this had some relation with XBL. Unless you are
planning to put the template based DOM nodes to anonymous DOM.
>
> What do you think?
>
- Is this something you'd like to be implemented in the browsers,
and if yes, why? What would be the reasons to not just use script
libraries (like your prototype).
If the have-to-change-HTML-parser like parts could be removed,
this all feels like something for JS + Proxy objects, just like what
you've done in the prototype.
- Is there a reason why you have chosen to create yet another
datastorage like object (although your Model is just a kind of
proxy)? Couldn't you reuse for example IndexedDB?
XUL Templates can be bound to sqlite, XML and RDF.
- Model looks in many ways like JS-fied and simplified XForms
model/instance. Have you investigated if there are important use cases
which XForms can handle (because it has more powerful binding
mechanism) but MDV can't? Are there plans to extend
the "Path language", or ideas how it could be extended? (XForms has
extensions to XPath)
In general I'm not too happy to see yet another
selector/path language. Would be great if some existing one could
be reused. Sure, some parts of the proposed language look quite a bit
like JSON, but there are other parts which are something very
different.
- It is not quite clear to me how the Model-as-a-proxy works.
What if the raw object has getters or setters, how does the Model
work in that case? (Calling a getter or setter may do any kinds of
changes to the raw object, and/or to the model)
- How does Model.get handle objects which have circular references?
How does the Path language work in that case?
- How does the observing mechanism handle the case when there are
several observers for the same property and the first one which gets
notified updates the relevant property (and then sets some flag to
itself to not handle following updates to prevents notification
loops). What values are notified to other callbacks?
- Nit, why are you using document.querySelector('#example') in the
examples. The good old document.getElementById("example") should be
faster ;)
- "Child nodes are not considered to be a part of the DOM. During
parsing, they are lifted out..." Huh, you really want to alter HTML
parsing?
- "If a template element is created via script, any children are
removed and attached to the instancePrototype when the template
element is attached to a document." What if the template is already
in DOM when the new child elements are added.
It sounds *very* strange to add new special cases to DOM Core
methods.
- What kind of property is instancePrototype? NodeList?
- What does this mean
"Any instances of a template must exist as a sequence of nextSiblings
following the template element itself, with each instance being
terminated by a HTMLTemplateInstanceElement."
I couldn't see any <templateinstance> elements in the examples.
- At which point and how are the instances created? How are
mutation events handled? (Unfortunately we do need to care about
mutation events still some time before there is a replacement.)
-Olli
Received on Wednesday, 27 April 2011 15:34:08 UTC