What exactly is a framework?
A common question is what is the difference between a library and a framework. The answer to this question can be pretty much summed up in a concept known as Inversion of control, which is a design principle based on the control of a program’s flow. In simple terms, it states that the control of flow of a program is received(or called) from a framework, whereas a library is called by the program.
A framework can be described as a “code template” that helps to solve a specific problem/task, or bring your code a sense of order.
A library can be described as a collection of functions/methods that can be useful to use in your code.
AngularJS is a framework based on the “Model-view-controller”(MVC) design principle, which put simply is the idea that a computer uses a controller (to navigate the page) which manipulates the model(the page) which in turn updates the view(what you see). For example, scrolling down a page and having text/images/content appear is a use purpose of MVC. AngularJS is fully open source, with major contributions from Google. The main reason the framework was created was to address the issues with making single-page applications(SPA) which is a single page web application or web site, which is designed for the goal of giving the user a experience similar to desktop applications.
Angular extends HTML also, adding a whole heap of features that are required to build interactive user interfaces (dynamic views) . HTML attributes can also be extended by the use of “Angular directives”. In the words of AngularJS documentation “Directives let you invent new HTML syntax, specific to your application.”.
Angular can be used to create some truly beautiful web applications, for example WikiWand.
Ember is another open source framework, made for the purpose of creating scalable SPA’s(single page applications). Ember has been described as a highly opinionated framework, designed to be flexible. Ember provides a HTML template language called Handlebars, which updates automatically when data changes. Ember is very much a framework based on productivity and fast, yet nicely done work.
Twitch.tv and Vine are Two notable web applications that have made use of Ember.