The modern web is increasingly depending on model-view-controller (MVC) frameworks. One inherent problem with web browsers is that HTML was designed for making it easy to define static content served as a page, but was not really optimal for the kind of dynamic content such as list boxes and menus.
The MVC paradigm is the principle of making sure that the model (data) is managed separately from the view (the interface that the user sees) from the controller (the business logic that dictates how they all work together). There are thankfully front-end MVC frameworks available for web applications that make it easy to define the UI layout without worrying about the other details. Two of the most popular are AngularJS and Ember.js. Let’s take a quick look at both.
AngularJS was developed by Google and is powerful for applying UI binding (a simple way to attach UI elements to a domain model) with a clean web presentation layer. It is designed with the strict philosophy that the UI should be developed in a way that is totally declarative (the way pure HTML has traditionally been) and the heavy programing should happen at the business logic layer.
EmberJS is a derived from the SproutCore framework and is also a pure MVC Javascript framework for developing functional, dynamic web user interfaces with ease. It is also built around UI bindings and a strict separation of web presentation layer from all else. What it also has, as opposed to AngularJS, is that it facilitates the use of composed views, which allows a developer to separate out a view into modular, reusable components.
***
Both choices are very strong, and as always offerings from Google tend to be very well designed and thoroughly tested. However , if modularity is the goal, Ember.js tends to have an advantage. Ember.js also plays very well as the presentation layer of the Rails stack and is preferred by Ruby on Rails professionals.