Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For what it's worth, I've worked on large teams building production Angular, Backbone and Knockout applications. By far my preferred framework is Backbone.

Angular is great at first. You can get the first 80% of your application done in no time. The rough edges are intense though, and if you find yourself using the $compile and $parse services you're definitely writing code someone else is going to curse you for down the road.

Also, I do not understand why so many people think Angular is "testable." The end to end testing is weird and would be better accomplished with Selenium.

The unit testing story is even worse. inject() and module() helper functions are a necessity, and that fact alone should cause everyone pause. How come the basic injector is so difficult to load things into? Creating controllers in unit tests is awkward. Dealing with scope.$apply and promises is also painful.

Large code bases get painful quickly. There's (at least last time I looked) no dynamic script loading solution. You can use require, but coupling that with the dependency injector gets awkward. Further, directives sound great at first, but once big teams start pumping out directives, it gets difficult to reason about your html and figure out what's going on.

Form validation is really strange and the business requirements on every project I've worked have never been met by it.

Also, Angular seems to suffer more from client side rendering jitter than many of the SPA frameworks I've seen. Backbone does too, for sure, but it's easier to hook up something like FastDOM to Backbone.

Which leads me to Backbone - it's more of a library than a framework. It provides nice code structure and organization and otherwise stays out of your way. For small apps that may not be desirable, but for large apps it can absolutely be a blessing. Sure, you have to do more, it may even take more discipline, and it might even be more lines of code, but for big teams it really does seem like a better fit.

Finally, my contention is that VERY FEW APPLICATIONS SHOULD BE WRITTEN AS "SINGLE PAGE APPLICATIONS". Using something like Pjax + Backbone/React for light interactivity seems to be a sweet spot for many of the applications I've worked on. So many screens are read only, and performance will be markedly better rendering server side and injecting HTML directly in to the DOM.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: