AngularJS is a JavaScript framework for building single-page applications. It uses HTML templates with data binding, and supports MVW, MVVM, MVC, and dependency injection patterns. AngularJS allows developers to create dynamic views with declarative templates, and link them to data with a reactive programming style. It consists of modules, views, directives, filters, controllers, services and factories to create maintainable and testable code.