by: Alex Voerman 

FRONT END FRAMEWORK

Goals 

Should we declare a winner at the end?

What is a framework?

A platform that provides a foundation for developing software applications

History of JavaScript Front End Frameworks 

1996 Advent of JavaScript

~2006

jquery era

~2010

SPA era

~2014

component era

~2018

full stack SSG/SSR

2021+

web components / wasm

React vs Angular vs Vue

  • Philosophies
  • Usage
  • Performance
  • Templating/Syntax
  • Learning Curve
  • Tooling/CLIs
  • Styling
  • Testing
  • SSR/SSG/Advanced

👑

SMACKDOWN

React

Released 2013

by Facebook

React

"Unopinionated"

often called a "library"

❌ router

✅ dom manipulation

❌ http client

❌ official testing framework

⚪ state management

Angular 

Released 2016

by Google

Released 2010

"Opinionated"

often called a "platform"

router

✅ dom manipulation

http client

official testing framework

state management

Angular 

Vue 

Released 2014

by Evan You (Community-driven)

Somewhat opinionated

calls itself a "progressive framework"

router

✅ dom manipulation

❌ http client

official testing framework

state management

Vue 

Industry Use 

Usage (Stateofjs.com)

Industry Use 

Interest

Industry Use 

Awareness

👑

Performance

Bundle sizes

React

Angular

Vue

small

👑

small

small

great

great

great

Runtime Performance

👑

👑

React

Angular

Vue

Templating / Syntax

React

Angular

Vue

JSX

Typescript Classes, standalone HTML, CSS

Split JS/HTML/CSS in same file

React

React

Angular

Vue

Learning Curve

React

Angular

Vue

Typescript based: Great for Object Oriented (.NET / Java) Devs.

Great for beginners, knowledge of HTML/CSS.

React API is very small. Learning ecosystem is important.

👑

Tooling/CLIs

create-react-app

angular-cli

Vue CLI

ejects webpack

ejects webpack

no ejecting (webpack based)

👑

React

Angular

Vue

angular.json (config)

vue.config.js

Global State Management

Built in options

vuex

👑

limited out of the box support

3rd party redux very popular

3rd party ngrx-store

React

Angular

Vue

Styling

Built in sass or css support

Auto scoped

css, sass, css modules

3rd party integrations - "CSS in JS", css modules

React

Angular

Vue

Not auto-scoped by default

👑

Testing

React

Angular

Vue

3rd party: react-testing-library using jest

built in framework for testing, uses karma + jasmine

3rd party: vue-testing-library using jest

👑

CSR/SSR/SSG

CSR/SSR/SSG

React

Angular

Vue

SSR

 

 

SSG

👑

Summary

great for...

less ideal for...

* Devs with OOP experience (C# or Java)

* Teams that need strict boundaries

* Getting enterprise-grade apps up and running quickly

* Beginners, devs/UX designers with HTML/CSS experience

* Running on top of old, legacy apps

* Finding devs with experience
* Teams with strong leads or devs that can make decisions

* Flexibility - weird environments

* SSG / SSR

* Finding devs with experience

React

Angular

Vue

* Weird build situations (heavy webpack is needed)

* Teams with limited guidance

Beyond React/Angular/Vue

Svelte

Ember

  • Mostly same API as React (backwards compatible add-ons)
  • Only 3kb in size

Non JavaScript

Feedback / Questions?

deck

By Alex Voerman

deck

  • 72