elm a possible future for web frontend

56
ELM A possible future for web frontend

Upload: gaetano-contaldi

Post on 07-Jan-2017

115 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Elm   a possible future for web frontend

ELMA possible future for web frontend

Page 2: Elm   a possible future for web frontend

Agenda

What is Elm? Elm features Elm ecosystem

Elm architecture

Why a possible future?

Page 3: Elm   a possible future for web frontend

What is Elm?

Page 4: Elm   a possible future for web frontend

Functional language

ML style language

Inspired by Haskell

Page 5: Elm   a possible future for web frontend

Elm features

Page 6: Elm   a possible future for web frontend

Statically typed∎ Primitive types∎ Basic data structures∎ Union types

Page 7: Elm   a possible future for web frontend
Page 8: Elm   a possible future for web frontend

Never null again

Page 9: Elm   a possible future for web frontend
Page 10: Elm   a possible future for web frontend

Immutability

Page 11: Elm   a possible future for web frontend
Page 12: Elm   a possible future for web frontend

Purely functional∎ Functions depend only on passed arguments∎ No side effects

Page 13: Elm   a possible future for web frontend

Effects

Page 14: Elm   a possible future for web frontend

Effects in JS

∎ Synchronous∎ Asynchronous via callback∎ Asynchronous via promise

Page 15: Elm   a possible future for web frontend
Page 16: Elm   a possible future for web frontend

MOCKS

Page 17: Elm   a possible future for web frontend
Page 18: Elm   a possible future for web frontend
Page 19: Elm   a possible future for web frontend

Effects as Data

Page 20: Elm   a possible future for web frontend
Page 21: Elm   a possible future for web frontend
Page 22: Elm   a possible future for web frontend

Effects in Elm

∎ Synchronous via Messages∎ Asynchronous via Tasks

Page 23: Elm   a possible future for web frontend

Elm Tasks

∎ Module for async actions that might fail∎ Tasks can be easily chained together∎ Lazy: nothing will happen until something run them.

Page 24: Elm   a possible future for web frontend

Interop with JS: Ports∎ Only way you have to receive or send informations from JS.∎ It works like a pub-sub mechanism.

Page 25: Elm   a possible future for web frontend

Elm architecture

Page 26: Elm   a possible future for web frontend

Basic Pattern:Counter App∎ Model∎ Messages∎ Update∎ View

Page 28: Elm   a possible future for web frontend
Page 29: Elm   a possible future for web frontend

Counter:User Flow

User clicks on the “+” button

Increment action is fired

Update function gets called

View gets updated

Page 30: Elm   a possible future for web frontend

Commands and Subscriptions∎ Commands: Tasks that Elm runs for you in the background∎ Subscriptions: subscribe to data you care about

Page 31: Elm   a possible future for web frontend

Subs Pattern:Dice Roller App

Page 32: Elm   a possible future for web frontend

Dice Roller:User Flow

User clicks on the “Roll” button

Roll action is fired

Update function returns

command

Elm executes the task

“New Number” action is

fired

Update function

gets called

View gets updated

Page 37: Elm   a possible future for web frontend
Page 38: Elm   a possible future for web frontend

Why a possible future?

Page 39: Elm   a possible future for web frontend
Page 40: Elm   a possible future for web frontend

I don’t need Elm!Functional programming Modern JS is inspired by FP

Components React

Effect as data Flux / Redux

Type checking Flow.js / Typescript

Immutability ImmutableJS / Ramda / Lodash

Modules Webpack / Babel

Page 41: Elm   a possible future for web frontend

∎ Syntax∎ Types∎ Immutability

Learning curve

∎ Compiling∎ Maybe and explicit error

handling

Page 42: Elm   a possible future for web frontend

Use JS means...

Page 43: Elm   a possible future for web frontend

Hard to start new projects

Page 44: Elm   a possible future for web frontend

Optional features

Page 45: Elm   a possible future for web frontend

Relies on programmers

Page 46: Elm   a possible future for web frontend
Page 47: Elm   a possible future for web frontend

Everything that is syntactically legal, that the compiler will accept, will eventually wind up in your code base.

John Carmack

Page 48: Elm   a possible future for web frontend

Elm instead...

Page 49: Elm   a possible future for web frontend

Guided programmers

Page 50: Elm   a possible future for web frontend

Code easy to understand

Page 51: Elm   a possible future for web frontend

Code easy to test

Page 52: Elm   a possible future for web frontend

Elm ecosystem

Page 53: Elm   a possible future for web frontend

Elm reactor

Page 54: Elm   a possible future for web frontend

Elmpackages

Page 55: Elm   a possible future for web frontend

Will Elm be the future?

Page 56: Elm   a possible future for web frontend