Slide 1

Slide 1 text

ANATOMIA DI UN'APPLICAZIONE JAVASCRIPT ISOMORFICA

Slide 2

Slide 2 text

Luigi Maselli web: web: twitter: @grigi0 https://grigio.org https://corso-javascript.it

Slide 3

Slide 3 text

ARGOMENTI DEL GIORNO Cosa è un’app/lib isomorfica JS Framework & libs Demo: Minimal Boilerplate

Slide 4

Slide 4 text

COSA È UN’APP/LIB JS ISOMORFICA/UNIVERSALE ?

Slide 5

Slide 5 text

ISOMORFICA In matematica, in particolare in algebra astratta, un isomorfismo (dal greco ἴσος, isos, che significa uguale, e μορφή, morphé, che significa forma) è un'applicazione biunivoca fra oggetti matematici tale che l'applicazione e la sua inversa siano omomorfismi. Wikipedia

Slide 6

Slide 6 text

ISOMORFICA (PROGRAMMAZIONE) .. "Isomorphic JavaScript." A term coined by Charlie Robbins at Nodejitsu and popularized by Spike Brehm of Airbnb, this has come to refer to JavaScript code that can run equally well on the client or on the server, meaning that you can write your JS once and run it anywhere. http://info.meteor.com/blog/isobuild-why- meteor-created-a-new-package-system

Slide 7

Slide 7 text

(PARENTESI X GRAMMAR NAZI) 1. Si dice: isomorfa! 2. Dopo #petaloso e #educazione (al posto di istruzione..) 3. Se potete twittare a @AccedemiaCrusca #isomorfica 4. Come isomorfa (ma più f**a)

Slide 8

Slide 8 text

ISOMORFICA? Assomiglia a Java .. "Write once run everywhere"

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No, l'approccio "JavaScript isomorfico" è diverso! 1. "Learn once write everywhere": condividere quanto più codice e pattern possibili (ma anche poter sfruttare le specificità della piattaforma sottostante) 2. UI native: WebView oppure UI native

Slide 11

Slide 11 text

PUÒ CAPITARE ¯_(ツ)__/¯

Slide 12

Slide 12 text

JAVASCRIPT È OVUNQUE

Slide 13

Slide 13 text

COSA POTREBBE FARE UN'APP JS

Slide 14

Slide 14 text

ESEMPIO DI CODICE ISOMORFICO

Slide 15

Slide 15 text

// js agnostico (MyApp JS) class Main extends React.Component { state = {counter:0}; increment() { const {counter} = this.state; this.setState({counter: counter + 1 }); } render() { return (
Main component, {this.state.counter} this.increment()}>+1
); } } export default Main;

Slide 16

Slide 16 text

// js server / SSR import React from "react"; import ReactDOM from "react-dom/server"; import Main from "containers/Main"; // da scrivere nella risposta HTTP const MainHtml = ReactDOM.renderToStaticMarkup(); ... // js client / Web DOM specific import React from "react"; import ReactDOM from "react-dom"; import Main from "containers/Main"; const reactRoot = document.getElementById("react-root"); ReactDOM.render(, reactRoot);

Slide 17

Slide 17 text

Bello JavaScript isomorfico da dove si parte?

Slide 18

Slide 18 text

OPZIONE 1: METEOR La piattaforma js isomorfica più conosciuta, comprende un set di librerie che gestiscono diversi aspetti isomorfici e client / server.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Meteor :) It just works today (2012 $11.2M) Semplice (se si rimane sul tracciato) Documentato Realtime build-in Autenticazione

Slide 21

Slide 21 text

Meteor :( Embed dipendenze obsolete Molte cose cambieranno. Inevitabilmente verso NodeJS/NPM (1.3beta16) Meteor è tanto ma non è tutto Praticamente solo MongoDB

Slide 22

Slide 22 text

OPZIONE 2: DIY IL TUO JAVASCRIPT ISOMORFICO Meatier, Mantra, Apollo (by Meteor + GraphQL) .. ... oppure componiti il tuo Meteor con quello che ti serve: react, webpack, babel,..

Slide 23

Slide 23 text

REACT STARTER PROJECT

Slide 24

Slide 24 text

MEATIER

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

DIY PRO includi solo quello che ti serve mainstream NPM packages incrementale

Slide 27

Slide 27 text

DIY CONTRO è tua responsabilità incollare tanti piccoli pezzettini

Slide 28

Slide 28 text

DEMO https://github.com/corso-javascript/react-isomorphic- minimal https://github.com/corso-javascript/docker-compose- nginx-nodejs

Slide 29

Slide 29 text

QUINDI..

Slide 30

Slide 30 text

OPPURE..

Slide 31

Slide 31 text

CONCLUSIONE Preparati a nuovo mondo JavaScript centrico Non c'é un pattern che va bene per tutti, è sempre un compromesso tra il controllo che vuoi avere sull'app e quello che deleghi al framework lib. Non ottimizzare i non problemi

Slide 32

Slide 32 text

GRAZIE! Codice sconto TOJS119 corso-javascript.it/?coupon_code=TOJS119