Comparing Javascript frameworks

It’s almost bewildering to see how many different (contrasting) opinions there are out there. After reading the post, check out the comments.

There are disagreements on which approach is the most performant, on whether using a custom collection of libraries (more flexible but more work) or a more complete framework (less flexible but less work) makes mores sense. There is disagreement over whether a whole site should be a Single Page Application, or just a section of a site. In fact, there’s disagreement over what constitutes the difference between a “site” and an “application” to begin with. There’s disagreement on whether client-side or server-side DOM-building is faster.

But the thing that struck me the most was this: The article starts with the premise:

“It’s no longer good enough to build web apps around full page loads and then “progressively enhance” them to behave more dynamically.”

but as one commenter astutely points out:

“… unless you happen to be github or 37signals, in which case you can easily build apps and progressively enhance to be fast and responsive ….”

I’m personally in the latter camp – it may just be a matter of habit, but I see the most logic in building traditional server-side DOM and then using “sprinkle on top” JS to enhance functionality where needed. I know I’m part of a slowly shrinking group of developers who haven’t bought into the 100% Javascript thing, but the “server first” approach does seem (to me) to give the best combination of ease of development, graceful degradation, SEO, and performance.

But I’m ready and willing to have my philosophy tweaked on this – all I need is an example of how JS-based DOM creation can be as fast, easy, and performant as it is in Django, while still giving easy access to deep data traversals, model methods, and permissions (without jumping through time-costing hoops).

Today I begin my exploration of Rails in ernest. It’s becoming apparent that Rails has evolved in this direction more quickly than Django by building REST directly into the framework (Django is more about extremely DRY data modeling and it’s awesome auto-generated internal API).