AngularJS is a JavaScript MVC framework that uses HTML syntax extensions to add dynamic behavior to web pages. It consists of templates, expressions, controllers, models/scopes, modules, services, and directives that allow developers to build single page applications. Angular compiles templates containing directives and expressions into a view. Controllers define the model/scope and are used in templates to access data and functions. Modules allow reusable features and services provide view-independent logic.