DEV Community

Discussion on: Choosing Front End Framework for Large Scale Application(Angular/React/Vue)

Collapse
 
layzee profile image
Lars Gyrup Brink Nielsen • Edited

Angular is a fully featured, platform agnostic application framework. React and Vue are primarily UI libraries. All three are focused on component based UI.

There is a lot to take in with regards to Angular since it has so many features:

  • Grouped and shared functionality with NgModules
  • Dependency management (it uses Dependency Injection)
  • Client-side routing
  • Lazy-loading
  • Development tools
  • Testing utilities
  • Platform specific tools
  • Data binding
  • HTTP requests
  • Observables
  • API reference
  • Guides for development and testing
  • Tutorial
  • Typings for TypeScript
  • Template based UI components with a declarative syntax
  • Forms and validation
  • Formatting
  • Globalization
  • Animations
  • Premade UI components (Angular Material)
  • Reusable UI behaviour (Angular CDK)
  • Web components (Angular Elements)

Some - if not a lot - of these features are not included in React or Vue so you will have to find 3rd party libraries and tools.

Angular has a lot of custom declarative syntax to learn in its templates. There is good documentation for getting started and well beyond the basics. However, there are many advanced use cases that to this day are not documented. Maybe because it is such a large framework but less than 2 years old.

While it takes months and months - possibly years - to get a firm handle on all the features that you need, you are on your way to a scalable, maintainable, testable codebase.

With that being said, Angular does not handle:

  • Application State Management
  • Multi-threading
  • Software architecture, e.g. Separation of Concerns

If you have a complex application, i.e. lots of components with lots of sources of state updates, you will need to think carefully about ensuring a unidirectional data flow by using immutable data and minmising the dirty checking change detection.