AngularJS is a JavaScript framework for building dynamic web applications and single page applications. It uses MVC architecture and allows two-way data binding between models and views. Core components include directives, controllers, services and filters. AngularJS makes AJAX calls using the $http service and handles routing and deep linking using $routeProvider. Common directives include ng-app, ng-model and ng-bind.