Using a transpiled language like Amber or Dart or Scala.js avoids the Angular complications; you write your application in a fashion similar to most other kinds of applications, i.e., a simpler fashion (none of this two-way data binding and dependency injection crap). (Disclosure: I use Amber Smalltalk.)
It’s true that writing SPAs in general is more complicated than writing, say, a traditional, server…
Richard Eng
1

I am not sure I follow. Writing in a transpiled language like Dart creates a pile of Javascript. It doesn’t create a web application. Dart has language features that make it easier to structure and organize your code, but so does ES2015.

However you do it, you’ll still need some sort of a framework binding, for example polymer-dart, and there’s were you start encountering complexity. And that complexity will scale with the competency and flexibility of the framework.

As for the server side, I don’t find JS/Node to be a compelling solution. We run a Spring/Java stack.