This article gives an overview of web development using AngularJS through Single Page Applications (SPA) technologies. It illustrates at a high level how to use AngularJS with legacy technologies such as PHP, .Net, Ruby on Rails (ROR), and Java.
- Script based
- No compilation
- Instant results
- Rapid development
- Seamless integration with HTML to build rich UI
- Support for AJAX
Client side scripting comes in handy when we need to handle business logic in the browser and maintain a thin loading time for applications. It grows as a bottleneck in terms of complexity and maintainability when more and more logic ends up being pushed into the client side scripts to be handled in the browser.
The above challenges paved the way for the evolution of client-side MVC frameworks which promised improved productivity and maintainable application code.
Overview of Angular JS
- Structural framework for dynamic web apps
- Use HTML as your template language
- Extend HTML's syntax to express your application's components clearly.
- Cross browser compatible
- Static HTML pages are transformed to process dynamic content via 2-way binding for automatic synchronization of Model and View
- Its data binding and dependency injection support eliminates much of the code we currently have to write.
- Fully extensible and works well with other libraries. Every feature can be modified or replaced to suit the unique development workflow and feature needs.
- The emergence of Angular JS coincides with the need for single page application development. The single page web applications provide more fluid user experience as Desktop Application
- Increase the browser based application with MVC (Model, View and Controller) which makes the development and testing process simple and quick
- Provides robust, testable, and flexible applications with Professional Programming Practice and browser compatibility.
- Implements the MVC pattern i.e., Model Object Oriented Design on the client side for uniquely conceptualizing the core factors of presentation, data, and logic components.
- Provides structure for building application starting from UI Design, Business Logic till testing Process.
- Everything we need to build a CRUD app in a cohesive set: data-binding, basic templates, directives, form validation, routing, deep-linking, reusable components, dependency injection.
- Testability: unit-testing, end-to-end testing, mocks, test harnesses.
- Seed application with directory layout and test scripts as a starting point.
- 2-way Data Binding
- Module Based
- Dependency Injection
- Unit Test
- MVDeep Linking
- Dependency Injection
Why Angular JS?
Rapid Development Cycles
- Angular JS provides ng-model and ng-class directives to cover common operations and allows 2-way data binding and saving to the server.
- It reduces the code.
Addresses Design Bottlenecks
- Angular JS has ng-resource to create services that hook up to REST APIs and return back that object in JSON and fully functional object.
- Angular JS encourages to also deal with models on client side just like you would on the server side.
Easily Maintainable Software
- Angular JS encourages using the model object oriented design on the client-side.
- Object oriented design principles ensure software is more maintainable compared to procedural.
- Angular JS provides dependency injection at its core making flexible testing.
Encourages Good Programming Practices
- Features like Model, dependency injection, and ability to create directives lends to reusable and shareable components.
- REST API connection to server and benefits through Angular JS usage.
Angular JS With MVC Frameworks and Technologies
In many Angular JS web applications, each web page is really a single-page application (SPA), so the role of the server-side is an API consisting of a set of web services to interact with the server-side databases. The web application created with Angular JS will have master detail structure consisting of two pages such as Master (list of items) and Detail (item).
Items can be edited and saved in the details screen. Limited editing of items can be done on the master screen. The application structure being highlighted was built starting from the Angular-seed project with two pages at the root as list.html and index.html. Each page being a SPA with separate services for interacting with server-side for the pages respectively.
Angular JS is the client side Java Script Framework whereas Ruby on Rails is server side application framework but both the frameworks work based on MVC design pattern. The key aspect of Angular JS is that all client side data manipulations used for various User Interface Use Cases such as Lists, Refine Search, and Graphical Data Representation etc. were provided to the user as Single Page Application.
This way the true potential of Angular JS is utilized for building the Single Page Application and Rails is capitalized for its server-side implementation using its Models and Controllers. The layers interact using Restful JSON API services.
In Single-Page Applications (SPAs), the entire page is loaded in the browser after the initial request, but subsequent interactions take place through AJAX requests. This means that browser has to update only the portion of the page that has changed; there is no need to reload the entire page. The SPA approach reduces the time taken by the application to respond to user actions, resulting in a more fluid experience.
Create an ASP.NET Web API service to send and receive JSON data
Create a responsive UI using Angular JS
Enhance the UI experience with CSS3 transformations
Through Angular JS with Java (Springs/Struts/Hibernate), applications can be divided into five sub-tasks:
Application-util (Simple Java Classes)
Application-services (Hibernate + Springs)
Application-commons (POJO classes)
Application-apis (Spring Controllers)
Application-app (Angular JS + Struts + Spring)
Maturity: AngularJS have a stable API and it’s in application development for more than 2 decades. Also, it provides support through good documentation and examples and huge community.
Size: AngularJS deployment scope is huge and makes the application fully functional and suitable for mobile applications by limiting the size.
Out of the box solution: AngularJS is packed with a lot of features so that a user has enough tools to get going. It comes with Directives and Filters (custom and built-in). It has good support for module dependencies and injections, along with services and factories which become reusable parts for apps.
Two-way data binding: AngularJS provides two-way data binding upfront and reduces the complexity to a large extent. The developer has to write less code which helps to make the process less error-prone.
Opinionated Development: AngularJS is a strongly opinionated-implementation which are to be done in the "Angular way."
Interoperability: AngularJS works well with different technologies. Also, AngularJS encourages developers not to use libraries such as jQuery, but provides a subset jqLite.