AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and succinctly.
- Template - HTML with additional markup
- Directives - extend HTML with custom attributes and elements
- Model - the data shown to the user in the view and with which the user interacts
- Scope - context where the model is stores so that controllers, directives and expressions can access it.
- Data Binding - sync data between the model and the view
- Controller - the business logic behind views
- Dependency injection - creates and wires objects and functions
- Injector - dependency injection container
- Module - a container for the different part of an app including controllers, services, filters, directives which configures the Injector
- Service - reusable business logic independent of views