AngularJS is a JavaScript framework for building single-page applications. It uses HTML as the template language and allows you to extend HTML vocabulary for your application. The main principles of AngularJS are templates, directives, models, scopes, expressions, compiler, filters, data binding and controllers. It follows MVC architecture with modules, controllers and views. $scope provides the connection between the controller and view. Routes are used to define navigation between views.