1 of 34

Vue.js

The progressive framework

DevDay Napoli

Proudly presents:

2 of 34

Vue.js

The progressive framework

DevDay Napoli

Proudly presents:

Halloween

Edition!

3 of 34

Michele Nasti

4 of 34

Come mi sono sentito mentre imparavo le ALTRE librerie frontend

5 of 34

In principio...

6 of 34

Next step:

7 of 34

8 of 34

Less

More

React+

Vue+

Angular

Ember

Meteor

Templating

Engines

Backbone

With

supporting

libraries

React

Vue

The Framework Spectrum

9 of 34

Vue.js

  • Iniziato alla fine del 2013
  • Prima release febbraio 2014
  • 100k stelle su github: 2018

10 of 34

La popolarità: aprile 2015

11 of 34

Sempre Aprile 2015

12 of 34

Concetti chiave

13 of 34

  • Declarative & Reactive Rendering

  • Component Oriented Architecture

14 of 34

Declarative & Reactive

Rendering

15 of 34

DOM

State

???

16 of 34

DOM

Problemi del DOM:�

  • Il Re-rendering di intere parti del DOM è costoso e distruttivo
  • Mantenere il DOM in sync con lo stato, in maniera imperativa, è difficile e soggetto a errori

17 of 34

Declarative & Reactive Rendering

View

User Input

State

Render

La View è un mapping dichiarativo dello stato

Lo Stato è l’unica fonte di Verità

18 of 34

var vm = new Vue({� el: '#demo',� data: {� msg: 'Hello Vue.js!'� }�})

<div id="demo">� <h1>{{msg}}</h1>�</div>

JavaScript

HTML

ES5 Snippet

19 of 34

var vm = new Vue({� el: '#demo',� data: {� msg: 'Hello Vue.js!'� }�})

<div id="demo">� <h1>{{msg}}</h1>�</div>

JavaScript

Dynamic Bindings

Vue instance

State

DOM Mounting point

Template

20 of 34

ES5 Demo

21 of 34

Parte 2:

Component Oriented

22 of 34

In principio...

  • Pagine statiche
  • Aggiunta di stili globali
  • Aggiunta di JS

Era tutto bello, tranne che per un dettaglio:

Scalabilità

23 of 34

“Classica” divisione dei file:

HTML

CSS

JS

24 of 34

...Ma le pagine di solito sono così:

Nav

Content

Item

Sidebar

Side

Item

25 of 34

Possiamo immaginare ogni blocco come un componente:

Nav

Content

Item

Sidebar

26 of 34

Vue solution:

HTML

CSS

JS

27 of 34

Vue solution:

HTML

CSS

JS

COMPONENTS!

28 of 34

29 of 34

Vue-cli

Perchè ?

  • ES5 merda
  • Servire un unico bundle
  • Compilare (beccare errori statici)

30 of 34

Vue-cli (2)

$ npm i -g vue-cli

$ vue init webpack-simple hello-world

(14 sec)

$ cd hello-world

$ npm install (161 sec)

$ npm run dev

31 of 34

Lanciatemi i componenti! (demo 2)

32 of 34

Ultime considerazioni

  • State management a eventi? complicato
    • Soluzione: Vuex
  • Routing?
    • Vue-router

Vantaggi delle librerie extra:

  • Stessa filosofia (stesso autore)

33 of 34

Ultime considerazioni (2)

Vantaggi:

  • facile da imparare
  • Moderno
  • Ottima documentazione
  • Autore (e team) molto attivo
  • Supporto tools (estensioni, IDE, linea di comando…)

Svantaggi:

  • No big sponsors
  • codice boilerplate qua e là

34 of 34

Michele Nasti

Grazie!