Vefskólinn · Frontend frameworks

Same office,
different superpowers

React, Vue and Angular. Meet the team, then build with all three.

press → to begin

Illustration: generated for this guide

Where we are

Where this fits

Modern web developmentnpm, Vite, TypeScript, and building with an AI agent
→
Frontend frameworksThis guide. What a framework is, three of them, and your own comparison
→
Your projectPick one framework and go deep
HTML, CSS and JavaScript npm install · npm run dev TypeScript an AI agent that writes code with you you describe, the AI builds, you decide

Nearly every real web app is built with a framework. Today you find out what that means, and which one fits you.

Why a framework at all

You change a number. Who updates the page?

On the whiteboard:

  • ✗Plain JS: after every change you find each element on the page and update it yourself.
  • ✗Six features later, forget one line and the page shows the wrong number.
  • ✓Framework: put the number into the HTML once. Change the number, the page updates itself.
  • ✓Frameworks call changing data like this state. That's the word from now on.
0 places show the number

Plain JavaScript · run this after every click

Framework · HTML, written once

Framework · on click

count = count + 1

Same features on both sides. Plain JS grows one update line per place, every click. The framework grows only the HTML; the click code stays one line.

Meet the team

Different frameworks, same great people

click a teammate to hear their pitch

React · profile

RagnarReact developer
Reactsince 2013 · Meta
Calls itself
“A library for web and native user interfaces”
Big idea
Write your HTML inside JavaScript (JSX). Change the data, React redraws the page.
You'll meet
useState, useEffect, props, JSX, keys
Friends
Next.js, React Native, Vite, a huge library ecosystem
Used by
Meta, Netflix, Airbnb, most startups you've heard of
function Counter() {
  const [count, setCount] = useState(0)
  return <button onClick={() => setCount(count + 1)}>{count}</button>
}

React · pros & cons

Move fast (and reuse)

“It works on my machine.”And on yours, once you pick the same 12 libraries I did.

+Pros

Biggest job marketMore React jobs than Vue and Angular combined. Learn it once, use it anywhere.
JSX is just JavaScriptLoops are map, conditions are ternaries. Little new syntax to learn.
Ecosystem for everythingNext.js, React Native, thousands of component libraries.
AI knows it bestAssistants have seen more React code than any other framework.

−Cons

Only the view layerRouting, data, forms, state libraries: you choose. Every project is different.
Many ways to do one thingClasses, hooks, context, Redux, Zustand… beginners drown in options.
Hooks have rulesDependency arrays, stale closures, surprise re-renders.
Immutable everythingSpread, map, filter. Forget one and nothing updates.

Vue · profile

ValaVue developer
Vuesince 2014 · Evan You, independent
Calls itself
“The progressive JavaScript framework”
Big idea
Write HTML with a few extras. One .vue file holds HTML, script and style together.
You'll meet
ref, computed, v-model, v-if, v-for
Friends
Vite (same author), Nuxt, Pinia, Vue Router
Used by
GitLab, Alibaba, Nintendo, the Laravel world
<script setup>
const count = ref(0)
</script>
<template>
  <button @click="count++">{{ count }}</button>
</template>

Vue · pros & cons

Pragmatic progress

“Good developers, happier humans.”Learn it on a Tuesday, ship on Wednesday.

+Pros

Gentlest learning curveTemplates look like HTML. v-model does two-way binding in one word.
Best documentationThe official guide is the tutorial. You rarely need a third-party course.
Batteries optionalOfficial router and store (Pinia), but only when you need them.
Small and fastSmallest bundle of the three in our test. Vite was made by the same author.

−Cons

Smaller job marketPopular in Asia and parts of Europe, rare in Icelandic job ads.
Two ways to write itOptions API vs Composition API. Tutorials mix them, beginners get lost.
.value everywhereReactive refs need .value in script but not in templates. Easy to forget.
Fewer big-company examplesLess enterprise tooling and fewer large open-source apps to learn from.

Angular · profile

ArnarAngular architect
Angularsince 2016 (AngularJS 2010) · Google
Calls itself
“The web development framework for building modern apps”
Big idea
Everything included, one way to do it. Classes, decorators, TypeScript always.
You'll meet
@Component, signal, computed, input(), @if / @for, the CLI
Friends
Angular CLI, RxJS, Angular Material, NgRx
Used by
Google, banks, airlines, government and enterprise systems
@Component({
  selector: 'app-counter',
  template: `<button (click)="count.set(count() + 1)">
    {{ count() }}
  </button>`,
})
export class Counter {
  count = signal(0);
}

Angular · pros & cons

Built for what's next

“Stronger apps, brighter businesses.”Yes, you need the diagram. No, you can't skip the tests.

+Pros

Everything in the boxRouter, forms, HTTP, testing, CLI. One way to do each thing.
Type safety everywhereEven templates are type-checked. A typo fails the build instead of the demo.
Scales to big teamsStructure and conventions mean any Angular dev can read any Angular project.
Long-term supportPredictable releases every six months, with migration tools.

−Cons

Steepest learning curveDecorators, dependency injection, RxJS, modules. Most concepts to hold in your head.
Heaviest tooling269 MB of node_modules and 5-second builds in our test, vs under half a second.
Overkill for small thingsA landing page in Angular is like commuting in a bus you have to drive yourself.
Old tutorials misleadModules, *ngIf, zone.js: much online Angular is out of date.

One app, three ways

The same todo list, three times

React
Vue
Angular

By the numbers

Same app, measured

Lines of application codealmost a tie
React
213
Vue
197
Angular
217
JavaScript sent to the browser (gzipped)what the user downloads
React
69.6 kB
Vue
26.4 kB
Angular
70.9 kB
Production build timeon the same laptop
React
0.2 s
Vue
0.4 s
Angular
4.9 s
node_modules on diskwhat npm install drags in
React
90 MB
Vue
80 MB
Angular
269 MB
Read this carefullyLines of code barely differ. The framework changes how you write, not how much.
When size matters26 kB vs 70 kB is invisible on wifi and very visible on a slow phone in the countryside.
Your turn laterYou will measure your own three apps the same way.

Quick game

Who wrote this?

Round 1 of 6

      
0 / 6
Look for the tells.Brackets, dashes, dots, decorators.
Cheat sheet[a, setA] → React
v- or .value → Vue
@ blocks, signal() → Angular

Which one, when

There is no best. There is a best fit.

Pick React when…

  • you want the widest job market
  • you'll lean on AI and Stack Overflow a lot
  • you might also want a mobile app (React Native)
  • you like choosing your own tools

“Just ship.”

Pick Vue when…

  • you want results this afternoon
  • you're adding interactivity to an existing site
  • the team is small and you value clarity
  • bundle size matters to your users

“Keep it simple.”

Pick Angular when…

  • the app is big and will live for years
  • many developers work on it at once
  • you want one right way, enforced by tools
  • you're joining a bank, airline or government project

“Build it properly.”

Learn one deeply and you can read the other two in a week. The concepts transfer. The syntax is the small part.

The assignment · 3 days

Build it three times, then explain it

1

Write the spec first

Pick an app, list its features, sketch the screen. Same spec for all three. The AI needs it, and so do you.

2

Build it in React, Vue and Angular, with AI

Let the agent write it, you review, run and correct. Same spec, same look. Note everything it got wrong and everything you didn't understand.

3

Write the report as a web page

Links to all three apps, a thorough side-by-side comparison, your scorecard, and your own tutorials on the hard parts. Your own interactive textbook.

4

Review two classmates

Read their reports, try their apps, give written feedback. Then improve yours from the feedback you got.

Rules of the game

  • ✓Not a todo list. That one's taken. Pick from the next slide or bring your own.
  • ✓Same features, same look in all three. Otherwise you can't compare.
  • ✓AI writes, you direct. You must be able to explain every file it produced.
  • ✓Small. One screen, one list, one form. Three apps in three days is plenty.

Pick your app

Small enough to build three times

Shopping listitems, categories, “bought” toggle, total count
Flashcardscards with front/back, flip, mark known, progress
Pomodoro timerstart/pause/reset, session log, sessions today
Notes with searchcreate, edit, delete, live filter, word count
Expense trackeramount + category, list, monthly total
Todo listalready done, see the comparison page

Every app needs: changing state, a list, a form, a derived value and something saved. That's where the frameworks differ.

Scaffold commands

# React
npm create vite@latest my-app-react -- --template react-ts

# Vue
npm create vite@latest my-app-vue -- --template vue-ts

# Angular (pin v20 if the CLI rejects your Node version)
npx @angular/cli@20 new my-app-angular --style=css --ssr=false

# then, in each folder
npm install && npm run dev   # Angular: npm start

or just tell the agent “scaffold a Vue + TypeScript app with Vite”

Working with the AI

You describe. It builds. You decide.

Compare

Your scorecard

ReactVueAngular
How easy was it to get running?scaffold, install, first render333
How readable is the code?could you explain every file?333
How well did the AI do?first try correct? modern syntax?333
How good are the errors?when you broke it, did it tell you where?333
Would you use it again?gut feeling, be honest333
Total151515

drag the sliders

Your report

A web page, not a document

my-app · React vs Vue vs Angular
Try themLinks to all three running apps, and to the code.
Side by sideEach concept once, with the real code from your three apps next to each other and what to notice.
The numbersLines of code, bundle size, build time, install size. Measured, not guessed.
Scorecard and verdictThe sliders from the last slide, with reasons, and the framework you'd pick.
Tutorials · things I found hardEvery concept you struggled with becomes a short lesson in your own words, with an example in all three. Interactive if you can. Your own textbook.
What the AI got wrongOld syntax, invented APIs, things that looked right and weren't. Per framework.
Use the modelThe todo comparison page (last slide) is the shape we want. Build yours the same way, with AI.
Thorough beats prettyReal code from your apps. Real numbers. Honest opinions you can defend.
Interactive tutorialsA tab switcher, a live example, a quiz. Anything the reader can click counts.

Hand-in

What you deliver

  • 1
    One repo, three foldersmy-app-react/, my-app-vue/, my-app-angular/, each runs with npm install and npm run dev
  • 2
    The report, as a web pagereport/index.html in the repo, and published so classmates can open it. Links to all three apps, the comparison, the numbers, the scorecard, your tutorials
  • 3
    Two peer reviewsread two classmates' reports, try their apps, leave written feedback in the LMS: what's clear, what's missing, one thing you learned
  • 4
    Your replyrespond to the feedback you received and fix what you can before the deadline
Day 1

Spec, React, Vue. Feature list and sketch first. Then two apps; with an agent they go fast. Keep notes.

Day 2

Angular, then the report. Expect old syntax from the AI. Measure all three. Write the comparison and your tutorials.

Day 3

Review round. Two reports, two sets of apps, written feedback. Then improve yours and hand in.

< Better together />

good code, better people ♥

1 / 21· Vefskólinn

Speaker notes · N to hide

Keys

→ spacenext step
←previous
Home Endfirst / last slide
Nspeaker notes
Ffullscreen
1 2 3on the quiz: answer React / Vue / Angular
?this help