I’ve been working with Angular (~6 months) and Marionette (~2 years) professionally with large applications, and I don’t understand why there are still comparisons where Marionette comes out on top. Yes, it’s that much better. Usually those that disagree have never tried Angular or “heard” things from others that “heard” things.
Marionette attempts to separate concerns, and it looks good for organization, but they are not complete separations and make debugging a nightmare especially when using Require JS. Developers of all levels will be pulling their hair out when working with a bug.
Coming from developing Backbone/Marionette web applications, Angular was initially difficult to grasp. But the difference is understandably valid as you develop applications that are overly complex. Once I got used to the Angular way, my mind was filled with frustration when working with Marionette applications.
Here’s my take on why Angular is better to use in a complex application – Angular’s view is the html page, and Marionette’s view is the View js, handlebars template, and html. I can confidently switch out the HTML file in Angular to create a brand new look with the same functionality, but I can’t say the same for Marionette. Minor changes in the html can require changes in the view js, and vice versa.
Marionette is based on jQuery so there are many existing plugins. When I started Angular, I needed to use something like Datatables.js for a sortable table. Forget the library, I was able to create a re-usable, sortable table in Angular within a day, and this was when I was just getting familiar with Angular’s API.
Minifying and Uglifying Angular could be difficult. I was tasked to minify and uglify an existing enterprise-grade Angular project that did not use Browserify or Require JS. It took me three days including one day of testing. It wasn’t too bad in terms of time, but it was painful looking for code that failed minification. If minification was considered from the start, this work could’ve been avoided.
So save yourself some trouble and pick Angular for your next enterprise-level project.