# Developer Guide: Introduction

Angular is pure client-side technology, written entirely in JavaScript. It works with the long-established technologies of the web (HTML, CSS, and JavaScript) to make the development of web apps easier and faster than ever before.

One important way that angular simplifies web development is by increasing the level of abstraction between the developer and most low-level web app development tasks. Angular automatically takes care of many of these tasks, including:

- DOM Manipulation
- Setting Up Listeners and Notifiers
- Input Validation

Because angular handles much of the work involved in these tasks, developers can concentrate more on application logic and less on repetitive, error-prone, lower-level coding.

At the same time that angular simplifies the development of web apps, it brings relatively sophisticated techniques to the client-side, including:

- Separation of data, application logic, and presentation components
- Data Binding between data and presentation components
- Services (common web app operations, implemented as substitutable objects)
- Dependency Injection (used primarily for wiring together services)
- An extensible HTML compiler (written entirely in JavaScript)
- Ease of Testing

These techniques have been for the most part absent from the client-side for far too long.

### Single-page / Round-trip Applications

You can use angular to develop both single-page and round-trip apps, but angular is designed primarily for developing single-page apps. Angular supports browser history, forward and back buttons, and bookmarking in single-page apps.

You normally wouldn't want to load angular with every page change, as would be the case with using angular in a round-trip app. However, it would make sense to do so if you were adding a subset of angular's features (for example, templates to leverage angular's data-binding feature) to an existing round-trip app. You might follow this course of action if you were migrating an older app to a single-page angular app.