Toolkits provide libraries that require assembly, while frameworks call the developer. AngularJS was designed to remove DOM manipulation code, using declarative templates and two-way binding instead of imperative code. It features scopes, modules, dependency injection, routing, directives, services, events, filters and promises to build web apps. Testing is important with AngularJS's inversion of control and removal of global state.