The Good and the Bad of Developing with Angular | Intelegain




Angular JS

The Good and the Bad of Developing with Angular

Angular is one of the most popular web application frameworks today. Introduced in 2009 by Google, it’s a part of JavaScript ecosystem and one of the most used web application frameworks as per StackOverFlow survey. As per the survey, approx. 36.9% of software engineers now use AngularJS and the new version of Angular 2+ to create user interfaces.

Here we discuss the main features, benefits and drawbacks of using Angular

What is Angular – Introduction to Angular and how it came to be

Angular started as a side project in 2009 by Miško Hevery and Adam Abrons. It was called <angular /> that would help developers, designers create web applications utilizing simple HTML tags. The name “Angular” comes from the angle brackets, or <> that surround the HTML tags.

 “We wanted to see if we could make it easier for Web designers, not necessarily Web developers, but Web designers, to sprinkle a little bit of extra HTML into their code so that they could turn a static form to something they could actually send in an email. The idea would be that you could [for example] have a mom-and-pop shop that sells pizza or something, maybe you could [have] a simple ordering system just by adding a bunch of these tags and they could send an email to the server.” – Miško Hevery

AngularJS’s main advantage when it was released was that it’d let you turn an HTML-based document into dynamic content. Prior to AngularJS intro, HTML (the web mark-up language) was always static, which means that the users couldn’t interact with the interface on the HTML pages.

While there were other ways of building dynamic single-page applications, those were too complicated for convenient engineering. Thus, AngularJS reduced the development effort that was typical when creating dynamic content and the users got web pages with dynamic forms and elements.

Google released Angular 2 in September 2016. They re-wrote the framework entirely to match the increasing requirements of the modern web. Angular (also referred to as Angular 2+) is built in TypeScript that offers developers with robust tools for building the client side of web applications.  The difference between this an AngularJS 1.x and the new Angular was improved significantly that the product at its core remains even with the new versions released.  Angular 4 was released in 2017 and since then several versions are regularly released bringing in several major updates.

What are the pros and cons of using Angular?

The good of Angular

Improved server performance

Angular reduces the burden from server CPUs as it supports the caching and other processes. This means that the server performs very well due to the reduced traffic and because it only serves static files and reacts to the API calls.

MVC architecture implementation

In AngularJS, the ‘Model-View-Controller’ or MVC architecture as it is called binds value to the framework when making a client-side app. Plus it also establishes essential features like data-binding and scopes- it automatically integrates app the app elements without adding extra code.

With the MVC architecture, it is possible to isolate the app logic from the UI layer and support the separation of concerns.

The controller [C] gets all the requests for the app and then works with the model [M] to create any data required by the view [V]. Consequently, the view utilizes the data created by the controller to exhibit the final displayable response.

Component-based architecture that facilitates reusability, readability, maintainability

You can think of components as small pieces of interface that are independent of each other. Sort of like a simple app with a list of items and a corresponding search box for you to retrieve the items by word matches. The box with listed names, the search box as well as the main sheet where the other boxes are positioned- all are considered separate components in Angular.

Like mentioned above, AngularJS was mainly built around MVC architecture- starting from the next version, Angular is considered as a component-based architecture (which is similar to MVC but makes sure higher re-usability of the components on the app).  This features allows for building UIs with many parts and in the meantime, streamlines the development course for developers.

Re-Usable-Similar components are greatly encapsulated, or we can say self-sufficient. Developers can reuse them on different parts of an app. This is particularly beneficial in enterprise-scope apps where diverse systems come together but have many similar elements like date pickers and search boxes etc.

Readable – Encapsulation also makes sure that new developers can read the code better and reach productivity faster.

Maintenance – The components that are easily decoupled from each other can be easily replaced with better implementation- so it is easier to maintain and update code within the iterative development workflow.

Greatly testable websites and testing option

One of the benefits of Angular is that it builds highly testable websites and applications. It allows end-to-end testing and unit testing (used for checking the app performance and verify whether it works as per client requirements) which makes debugging and testing easier.

This framework is practically built in mind with the features that support testing. With the help of Dependency Injections (DI), the testers can easily insert the test data in the controller to check its output and behaviour. Other unique testing tools offered by this framework include Karma, Jasmine and Protractor etc.

Two-way data binding

Angular expedites and simplifies that data-binding which doesn’t need a developer to put in work at all. It is referred to as two-way binding as it makes sure that the changes are made to the view are instantly presented in the model and vice-versa.

 Directives

Directives that enhance the HTML functionality and are appropriate for dynamic client-side applications begin with the prefix ng so that HTML can determine them and understand that they are app elements. They keep the scripts and HTML pages free of clutter and organized and allow independent codes by stuffing specific functions together and using them repeatedly. Besides a set of default directives, Angular also permits developers to make custom directives.

DOM Manipulation

Angular unlike other popular JavaScript frameworks takes the pressure off the developer to actively manipulate DOM (Document Object Model) thanks to its two-way binding approach. This saves the developers the time and the efforts typically spent on coding, translating and updating DOM elements.

 Faster development and application prototyping

With Angular faster prototyping is possible- you can develop app prototypes with good functionality in less time, by writing significantly less code and obtain feedback and make changes quickly.

Plus, a fast learner can get familiar with Angular in no time and once they are comfortable with it- they can see their development efforts and time dealing with it decreasing.

The main boost in development is due to multiple factors like hierarchal dependency injection, Angular universal and Ivy renderer etc.

Dependency Injection (DI)

Dependencies outline how the diverse pieces of code interact with each other and how the changes in one component impact the others. Generally, dependencies are directly defined in the components themselves. So every change in the dependency would need modifying the components as well. With Angular, injectors that outlined the dependencies can be utilized as external elements decoupling components from their dependencies.  DI make components more re-usable and simpler to manage/test.

As opposed to AngularJS, Angular uses the improved hierarchical dependency injection. The technique decouples the actual components from their dependencies by running them on a parallel basis. It creates a separate tree of dependency injectors that can be modified without refiguring the components.  Therefore, classes do not have dependencies in themselves but take them from the external source. Hierarchal dependency injection provides high-performance scores for Angular apps.

Ivy Renderer to remove unused code

A renderer translates components and templates into JavaScript and HTML that browsers can understand and exhibit. It applies the tree-shaking technique, i.e. it eradicates unused pieces of codes making the application faster and easier to load. Plus, it is backward compatible (after your Angular update your existing application can be rendered with Ivy without problem).

Angular Material

This assortment of Material Design elements improved for Angular allows developers to easily integrate UI components.

Angular Elements

Starting from the 6th version of Angular, engineers can easily add custom elements to any web application created with JQuery, React or Vue etc.

Angular Universal

This is a service that allows for rendering applications view on a server instead of client browsers. There is are set of tools to either pre-render your application or re-render your application for each request by a user. For now, the toolset is customized to Node.JS server-side frameworks with support to ANP.NET Core. Although, there are plans to add support for Python, Java and PHP.

Handle asynchronous data calls with RxJS

RxJS is a library generally used with Angular to handle asynchronous data call. This allows you to handle events independently in parallel and continuing execution without holding out for some event to happen and leave the web page unresponsive. Asynchronous programming maybe not new to RxJS but it makes it easier.

Seamless updates using CLI

Probably one of the popular features for many Angular developers, CLI automates the entire development process making app initialization, configuration and development as simple as possible. The Angular CLI facilitates you to create a new Angular project, add features, run end-to-end and unit tests with just a few commands. This not only enhances the quality of code but it also greatly expedites development.

Long-term support assurance from Google

Many developers consider Google support itself to be a major benefit of Angular- making the platform trustworthy. In fact, at the Ng-conf 2017, Google announced Long-Term Support (LTS) for Angular.

The bad of Angular

Compulsory JavaScript support

Suppose your computers have access to your server but the support for JavaScript is disabled. In such cases, the associated users won’t be able to access your website or apps. If there are many users like this, you can expect your Angular-based websites to be less fruitful. This, however, is not the case with webs that are plain HTML-based.

Steep learning curve

Angular is a versatile instrument, there is always more than one way to complete any task. This can create confusion among developers. There many tutorials and discussions, however, that can resolve most of the problems.

Regardless, if your team consist of new developers familiar with JavaScript to use the new Angular- they will face difficulties compared to the similar React or Vue on-boarding. They have to cover a lot of aspects such as dependency injection, modules, services, templates etc. Plus, learning RxJS (the reactive programming library for asynchronous programming) and Typescript is mandatory for Angular which is another point of contention for many developers.

Scopes

Layered and organized hierarchically, scopes can be complex to handle if you have no prior experience with Angular. One of the most difficult things to do could be debugging the scopes.

Complications with backward compatibility

The difference between the AngularJS and Angular is so large, as it is for migration between these two versions. It isn’t as easy as switching to, say, Angular higher version to lower version. There is an entire section in the Angular documentation that lists all the possible ways to deal with the migration.

Lacking CLI documentation details

Some developers have complained regarding the existing state of CLI documentation, expressing concerns regarding insufficient information on the official documentation on GitHub. Fortunately, there is a large community to help out.

Conclusion – Enterprise apps, progressive web apps (PWA) and apps with dynamic content all benefit from Angular

Typescript (essentially a superset for JavaScript) on which Angular is written has all the features needed for large-scale projects. It is equipped with advanced refactoring, auto-completion and navigation features. The architecture of this tool is such that you can easily reuse and maintain code.

The Angular team also works continually on facilitating the process of developing PWAs. As you can witness with Angular 5 coming equipped with built-in PWA support and Angular 6s’ (and further versions’) CLI commands that allow developers to transform their web apps into PWAs easily.

Meanwhile, since the primary purpose of Angular was to create SPAs (single-page applications), it has a wide range of SPA development tools in its arsenal. It is an ideal framework for websites where the content needs to change dynamically dependent upon the user preferences and behaviour.

There are many more things that are crucial to consider when choosing whether to use Angular or not. These need more examination of your project. If you have any questions or want us to help you make a decision, connect with us on contactus@intelegain.com.

Share Button
Thank you for contacting us, we will get back to you soon