PIcking Your Javascript Mobile Framework: Part 3 – Minimum Functionality

If you are joining us now, this is a multi-part shootout of mobile Javascript frameworks. In the last instalment, we got a series of candidates, 77 long. In this instalment, we will look at functionality.

The Todo app pushed by the TodoMVC team is very simple, but pretty complete. In it you:

  1. Create new todo items by entering them into a box
  2. Display all available todo items
  3. Alternatively, display only the active ones, or the completed ones
  4. Mark a todo item as completed by checking a box to its left
  5. Delete a todo item
  6. Delete all completed todo items
  7. Edit a todo item

Bindings and behaviors were refined further:

  • Aside from clicking on the box to the left and the delete button to the right, a double click on the item would allow you to edit it
  • Typing text into the edit box at the top would allow you to create a new item; hitting “Enter” would add the item to the list
  • Three links at the bottom would route you to the list of all items, active items, and completed items
  • A button on the bottom would allow you to delete all completed items
  • When in Active mode and an item is cleared, the item should automatically disappear

That all seemed pretty simple. For it to work, I also made the assumption that I could load the test in a browser page and then on a phone, and it would all work.

It is at this point that I need to remark in general: a knockout here doesn’t mean the framework has no merit, or that missing functionality in the todo example has any real-life implications on the quality and capabilities of the framework as a whole!

On the other hand, though, there are plenty frameworks to choose from, and I can be picky. If something doesn’t work as expected in the demo, it obviously means it’s not trivial to implement. So you could say, well if the demo doesn’t auto-update to remove newly declared done items, it’s not a big deal. But the big deal is that the view and the model should always be in sync. If I have to do it manually, then the value of this framework goes down the hill.

Also, some of the frameworks have no other fault than requiring a particular server (like meteor). It’s not that it’s tragic: in general, you would have no problem providing a web server. But in the case of a mobile app, you don’t really have that option at all.

So take this whole series as it is: a help in finding a mobile Javascript framework that makes it easy to write mobile apps using PhoneGap. Nothing more, hopefully nothing less.

I armed myself and got the following knockouts. If everything worked as expected, there was no comment.

Name Res. Comments
agilityjs  ✓  
ampersand  ✓  
angular-dart   missing routes
angularjs  ✓  
angularjs-perf  ✓  
angularjs_require  ✓  
ariatemplates   doesn’t start up from file://
atmajs   doesn’t start up from file:// and doesn’t show routing until todo is entered
backbone  ✓  
backbone_marionette  ✓  
backbone_marionette_require  ✓  
backbone_require  ✓  
batman  ✓  
canjs  ✓  
canjs_require  ✓  
chaplin-brunch    didn’t clear dynamically
closure  ✓  
componentjs    doesn’t start up from file://
cujo    no routing
derby    requires server
dijon    no routing
dojo    no dynamic update
duel    no routing
durandal  ✓  
emberjs  ✓  
emberjs_require    “the use of EmberJS with RequireJS is not advised”
enyo_backbone  ✓  
epitome  ✓  
exoskeleton  ✓  
extjs_deftjs    no routing; in general doesn’t behave as expected
firebase-angular  ✓  
flight  ✓  
gwt  ✓  
jquery  ✓  
kendo  ✓  
knockback  ✓  
knockoutjs  ✓  
knockoutjs_require  ✓  
lavaca_require  ✓  
maria  ✓  
meteor    seems to require external server
mithril  ✓  
montage    requires web server setup
mozart  ✓  
olives    no routing
plastronjs  ✓  
polymer    no update on completion
puremvc  ✓  
ractive  ✓  
rappidjs  ✓  
react  ✓  
react-backbone  ✓  
sammyjs  ✓  
sapui5  ✓  
serenadejs  ✓  
socketstream    client-server
somajs  ✓  
somajs_require  ✓  
spine  ✓  
stapes  ✓  
stapes_require  ✓  
thorax  ✓  
thorax_lumbar  ✓  
troopjs_require  ✓  
typescript-angular  ✓  
typescript-backbone    no routing and starts up sluggish
vanilladart    strangely, Enter doesn’t work, leaving you with no ability to actually enter a todo item
vanillajs  ✓  
vue  ✓  
yui  ✓  

Add a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.