Suppose I am building a fairly large, interactive browser-based multimedia application, and I have the following requirements:
- Webkit-only (let's say chrome on the desktop)
- versions for tablets and desktops, possibly with minor differences in the user interface
- Fully client side: no server interaction
- Best performance
- Fully internationalized
- I am going to create a lot of these applications.
- Long-term maintainability is NOT a priority (no TDD here)
- Reuse and use of the project from project to priority
- Designers manage roost - a lot of time will be spent on appearance and animation.
- Very short development schedules
- A small, brilliant team.
I seek advice from people who have previously done something similar to avoid unpleasant choices ahead.
I know JS and CSS3 inside and out, but I'm smart / experienced / old enough to know that there are advantages to using an architectural environment that someone else has developed, rather than skating on my own. However, these advantages only affect the fact that the applications that I write are consistent with the goals of developing the framework.
I spent the whole day trying to plunge into SenchaTouch and came to the conclusion that it is great to create something completely different than what I'm building. (By analogy with SenchaTouch / ExtJS - Swing, and I'm looking for Flash.) Also, Sencha seems to have big problems changing Javascript in a class-based system, rather than just accepting / embracing this system-based prototype. It overheard me.
I spent the whole day learning backbone.js, and I really like it, except that 1) I really don’t need ANY of the server interaction material (although I could use it to load all the user interface elements from resource files) and 2) he is fully responsive to updating submissions. But maybe this is good? I do not understand.
I looked at knockout.js, and although he is very worried about keeping his eyes on the latest developments, not one of the demos I have been looking for internationalization for. My i18n needs are simple: every text line that appears in my application must come from a table (and the language used can be changed at any time). When I see something like this on the knockout.js homepage:
optionsCaption="choose..."
I'm worried about how easy it will be to make this line dynamic based on setting the runtime variable. That is, if I wanted to write the equivalent:
optionsCaption=l10n("choose")
Is there a painless way to do this, and because the language change is automatically propagated throughout the user interface?
Any strong recommendation that I consider another structure that might be better suited?
In addition, I assume that we will use jquery / ui or zepto, possibly zepto, to eliminate many patterns in dynamic page refresh and animations. Any useful thoughts on this piece of architecture?