I'm also torn between using a pure javascript framework like Google Angular or a hybrid such as GWT or Dart. There are seriously too many options and no one has a clue what the long term support for any of these will be.
Pure JavaScript (or a JavaScript framework) are ideal if you either know JavaScript, or are ok learning the language. IMO, learning JavaScript is a good bet since it is the language of the web. Basically, your web apps will either be written in JS or compile to JS, so knowing the language is worth it.
Dart would be selected over GWT if you don't know Java, but like the lang features of Dart.
Of course, there are tons of options in the 'compile to' langs, with CoffeeScript being a popular on.
Well, i'd say it's more difficult but doable.(And i'm not a fan of javascript).
But tools are being created to help developpers maintain these "large apps".
Code analysis engines are the most important thing to work on in javascript land.I wish more people would work on that instead of framework MVC X or Y.
Something like TernJS ,while not perfect is actually doing interesting thing in term of understanding js code and auto completing it.
Now as I always say,dont like javascript? doesnt matter there are 100 languages you can use instead of it and still write for the web. The only thing that is important imho is wether that language can directly talk to the DOM or not,and invoke third party libraries.
that's why i'm not comfortable with Dart(but maybe it has changed).
I was trying alternative languages the other day and wrote this with one of them,the only thing i had to do to make it run in a browser is eval the transpiled version :
(define $taskList ($ "#tasks"))
(define $input ($ "input"))
(define $form ($ "form"))
;; add task
(define (addTask task)
(let ((t ($ "<li>" {"class" "task link"} )))
(t.on "click" (lambda (event)
(t.toggleClass "stroke")))
(t.text task)))
;;on submit
($form.on "submit" (lambda (event)
($taskList.append (addTask ($input.val)))
($input.val "")
(event.preventDefault)))
FYI this is the classic todo list with jQueryThere is no shame into writing for the web and not using javascript.At the end of the day,only the product matters.