SlideShare a Scribd company logo
The hero’s journey
in JavaScript frameworks
@ddprrt • fettblog.eu
Hero’s journey
Hero’s journey
Not the tour of heroes!
!
!
call to adventure
!
call to adventure
crossing the threshold
!
call to adventure
crossing the thresholdknown
unknown
!
call to adventure
crossing the threshold
abyss
known
unknown
!
call to adventure
crossing the threshold
abyss
the road of trials
known
unknown
!
call to adventure
crossing the threshold
metamorphosis
abyss
the road of trials
known
unknown
!
call to adventure
crossing the threshold
metamorphosis
the ultimate boon
abyss
the road of trials
known
unknown
!
call to adventure
crossing the threshold
metamorphosis
the ultimate boon
returning the boon
abyss
the road of trials
known
unknown
!
call to adventure
crossing the threshold
metamorphosis
the ultimate boon
returning the boon
abyss
the road of trials
known
unknown
It’s like learning a JavaScript framework!
!
call to adventure
crossing the threshold
metamorphosis
the ultimate boon
returning the boon
abyss
the road of trials
!
crossing the threshold
metamorphosis
the ultimate boon
returning the boon
abyss
the road of trials
starting a new project
!
metamorphosis
the ultimate boon
returning the boon
abyss
the road of trials
starting a new project
hello world
!
metamorphosis
the ultimate boon
returning the boon
abyss
starting a new project
hello world
googling the error message
!
metamorphosis
the ultimate boon
returning the boon
starting a new project
hello world
googling the error message
going
into
production
!
the ultimate boon
returning the boon
starting a new project
hello world
googling the error message
going
into
production
understanding the
technology
!
returning the boon
starting a new project
hello world
googling the error message
going
into
production
understanding the
technology
adding
framework to CV
!
starting a new project
hello world
googling the error message
going
into
production
understanding the
technology
adding
framework to CV
answering questions on
stack overflow
It’s a bumpy road ahead!
Three act structure
Three act structure
Act One Act Two Act Three
Three act structure
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Three act structure
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Plot Twist!
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Plot Twist!
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
Beginning
Inciting
incident
Second
thoughts
Act One Act Two Act Three
Obstacles
Obstacles
Three act structure
Climax
Denouement
End
Plot Twist!
learning curve
next.js
Act One: Setup
The Beginning
Inciting incident
Second thoughts
call to adventure
crossing the threshold
Act One: Setup
pages/index.js export default () => <h1>Hello World</h1>
package.json {
"name": "hello-world",
"scripts": {
"dev": "next",
},
"dependencies": {
"next": "latest",
"react": "^16.0.0",
"react-dom": "^16.0.0"
}
}
Act One: Setup
pages/index.js import Link from ‘next/link’
export default () =>
<>
<h1>Hello World</h1>
<Link href=‘/about’><a>About</a></Link>
</>
pages/about.js export default () =>
<>
<h1>Hello About</h1>
</>
Act One: Setup
Second thoughts? import Head from ‘next/head’
export default () =>
<>
<Head>
<title>A podcast about JavaScript</title>
</Head>
<h1>Hello World</h1>
</>
Act Two: Confrontation
Obstacles
Obstacles
Plot Twist
the road of trials
the abyss
Act Two: Confrontation
next.config.js const withTypescript =
require('@zeit/next-typescript')
const withCSS = require('@zeit/next-css')
const withMDX = require('@zeit/next-mdx')()
module.exports =
withTypescript()
Act Two: Confrontation
next.config.js const withTypescript =
require('@zeit/next-typescript')
const withCSS = require('@zeit/next-css')
const withMDX = require('@zeit/next-mdx')()
module.exports =
withCSS(withTypescript())
Act Two: Confrontation
next.config.js const withTypescript =
require('@zeit/next-typescript')
const withCSS = require('@zeit/next-css')
const withMDX = require('@zeit/next-mdx')()
module.exports =
withMDX(withCSS(withTypescript()))
Act Two: Confrontation
about.js import ArticleLayout
from '../components/ArticleLayout';
import About from '../articles/about.mdx';
import Head from 'next/head';
export default () => <ArticleLayout>
<Head>
<title>About ScriptCast</title>
</Head>
<About />
</ArticleLayout>;
Act Two: Confrontation The Abyss!
Act Two: Confrontation
server.js const express = require('express');
const next = require(‘next');
const app = next();
const handle = app.getRequestHandler();
The Abyss!
Act Two: Confrontation
server.js const express = require('express');
const next = require(‘next');
const app = next();
const handle = app.getRequestHandler();
app.prepare()
.then(() => {
const server = express();
server.get('/api', fetchRSS());
server.get('*', (req, res) => handle(req, res));
});
The Abyss!
Act Three: Resolution
Climax
Denouement
End
metamorphosis
the ultimate boon
returning the boon
Act Three: Resolution
import App, { Container } from 'next/app'
import React from ‘react';
export default class MyApp extends App {
render () {
const { Component, pageProps } = this.props;
return
<Container>
<Component {...pageProps} />
</Container>
}
}
_app.js
Act Three: Resolution
import App, { Container } from 'next/app'
import React from ‘react';
import Player from ‘../components/Player’
export default class MyApp extends App {
render () {
const { Component, pageProps } = this.props;
return
<Container>
<Component {...pageProps} />
<Player />
</Container>
}
}
_app.js
the ultimate boon!
returning the boon … to you!
A hero's journey in JavaScript frameworks
A hero's journey in JavaScript frameworks
A hero's journey in JavaScript frameworks
incremental adoption
A hero's journey in JavaScript frameworks
fin.

More Related Content

PDF
The hero's journey
PDF
Surviving change through cross-functionality - a visual story
PPTX
7-Epic, Story and Bug Reporting(updated).pptx
PDF
Designing Meaningful User Journeys - Confab Intensive 2016
PDF
An existential guide to testing React UIs
PDF
WASM! WASI! WAGI! WAT?
PDF
Serverless Rust
PDF
What TypeScript taught me about JavaScript
The hero's journey
Surviving change through cross-functionality - a visual story
7-Epic, Story and Bug Reporting(updated).pptx
Designing Meaningful User Journeys - Confab Intensive 2016
An existential guide to testing React UIs
WASM! WASI! WAGI! WAT?
Serverless Rust
What TypeScript taught me about JavaScript

More from Stefan Baumgartner (9)

PDF
Real-world component libraries at scale
PDF
Jamstack on Azure
PDF
TypeScript's Type System
PDF
Sketchmine: Design Systems Tooling
PDF
Automating UI development
PDF
[German] Ab mit dem Kopf!
PDF
Advanced JavaScript build pipelines using Gulp.js
PDF
Speed Index, explained!
PDF
Plumbin Pipelines - A Gulp.js workshop
Real-world component libraries at scale
Jamstack on Azure
TypeScript's Type System
Sketchmine: Design Systems Tooling
Automating UI development
[German] Ab mit dem Kopf!
Advanced JavaScript build pipelines using Gulp.js
Speed Index, explained!
Plumbin Pipelines - A Gulp.js workshop
Ad

Recently uploaded (20)

PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPT
Mechanical Engineering MATERIALS Selection
PPTX
additive manufacturing of ss316l using mig welding
PPTX
web development for engineering and engineering
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
DOCX
573137875-Attendance-Management-System-original
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
Internet of Things (IOT) - A guide to understanding
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Construction Project Organization Group 2.pptx
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PDF
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
PPTX
UNIT 4 Total Quality Management .pptx
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PPTX
Sustainable Sites - Green Building Construction
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
composite construction of structures.pdf
Foundation to blockchain - A guide to Blockchain Tech
Mechanical Engineering MATERIALS Selection
additive manufacturing of ss316l using mig welding
web development for engineering and engineering
Fundamentals of safety and accident prevention -final (1).pptx
573137875-Attendance-Management-System-original
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Internet of Things (IOT) - A guide to understanding
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
UNIT-1 - COAL BASED THERMAL POWER PLANTS
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Construction Project Organization Group 2.pptx
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
UNIT 4 Total Quality Management .pptx
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
Sustainable Sites - Green Building Construction
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
composite construction of structures.pdf
Ad

A hero's journey in JavaScript frameworks