SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
Francesco Sciuti
CEO @ Devmy - Microsoft MVP, Google Certified Developer & AWS UG Lead
Fast - UI System, Utilities
& Tools - Frontend
firmato Microsoft
SPONSOR
Agenda
- Cos’è FAST?
- Cosa sono i Web Components?
- Cosa è un Design System?
- I Packages
- @microsoft/fast-element
- @microsoft/fast-foundation
- @microsoft/fast-components
- @fluentui/web-components
- Un po’ di codice ;)
- I Tools e le Integrazioni con i Framework
Chi sono?
@FrancescoSciuti
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Developer per scelta e per passione,
amante di nerdaggini di ogni tipo
ed amante della condivisione del sapere!
Software Factory
● Project Management
● Architecture Design
● Team Augmentation
● Code Review
● Mentoring
● Outsourcing
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Learning Factory
● Formazione in azienda
● Corsi e Workshop
● Eventi online e offline
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Le tecnologie che prediligiamo
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Iscriviti al Canale YouTube: https://www.youtube.com/c/devmy
FAST
ma ora parliamo di
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Cosa è?
“FAST è una raccolta di tecnologie, basate su Web Components e su Web
Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune
delle sfide più comuni nella progettazione e nello sviluppo di siti ed
applicazioni Web.”
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque
Design System e che possono essere utilizzate con qualsiasi framework!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Cosa è?
FAST è un progetto open-source
di Microsoft.
Viene presentato qualche mese fa da
Rob Eisenberg (Principal UX Architecture and Tools Lead @Microsoft)
durante una .NET Community Standup.
FAST è l’acronimo di: Functional, Adaptive, Secure e Timeless.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Cosa fa?
Nello specifico ci aiuta a:
● Creare componenti per la UI basati su Web Components;
● Usare dei pre-built components messi a disposizione da FAST;
● Scegliere tra due Design System messi a disposizione da FAST;
● Scrivere un intero Design System senza dover re-implementare la
component logic;
● Integrare il tutto con qualunque front-end framework!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Cosa è?
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Come lo fa?
Adottare il più possibile approcci aperti e basati su standard web.
Web Component Standard
FAST si basa direttamente sugli standard W3C sui Web Component e non crea il proprio
modello per i componenti.
Framework Agnostic
FAST è agnostico rispetto ai framework e ciò gli consente di poter essere integrato con
Angular, Blazor, React, Vue o qualsiasi altro framework.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Tutto molto bello ma facciamo un passo indietro!
Un piccolo e breve ripasso forse non farà male.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Web Components
“Rendere il più possibile il nostro codice riusabile
è senz’altro una eccellente idea!”
Un programmatore qualunque
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Web Components
I Web Components sono una collezione di differenti tecnologie che ci
consentono di utilizzare elementi custom per le nostre web application,
incapsulando ed isolando le funzionalità dal resto del codice.
https://developer.mozilla.org/en-US/docs/Web/Web_Components
Insomma la possibilità di realizzare tags custom per le nostre web
application in maniera del tutto agnostica e senza l’uso di framework.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Web Components
● Deve essere un elemento HTML custom.
● Dovrebbe contenere tutta la logica per funzionare da solo.
● Non deve influenzare involontariamente altri componenti e
altre parti dell'applicazione.
● Deve gestire l’incapsulamento per evitare collisioni tra
JavaScript o CSS esterni.
● Più istanze dello stesso componente non devono interferire tra
loro.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
● Custom Elements
Le JavaScript API che consentono di definire gli elementi custom ed i loro comportamenti e come possono essere usate nelle
nostre web application.
● Shadow DOM
Le JavaScript API che consentono di creare un DOM specifico per l’elemento chiamato shadow.
Grazie a questo DOM, che viene renderizzato separatamente dal main DOM, viene garantito l’incapsulamento di
comportamenti ed elementi privati, così che non possano collidere con il resto della pagina in cui l’elemento viene ospitato.
● HTML templates
I tag template e slot ci consentono di riutilizzare markup e definire le posizioni di rendering, diventando così la base di
costruzione di elementi custom.
Web Components
Ecco i mattoncini per costruire Web Components:
Gli HTML Modules sono in realtà la quarta tecnologia nello stack, ma non è ancora stata implementata a dovere in tutti i più importanti browser.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
● Creare una Classe con la ECMAScript 2015 class syntax.
● Registrare il custom element con il metodo CustomElementRegistry.define() indicando il
nome dell’elemento e la classe.
È anche possibile indicare un tag nativo dal quale ereditare.
● Eseguire, se lo si ritiene opportuno, l’attach dello Shadow DOM usando il metodo
Element.attachShadow().
È possibile aggiungere child elements, event listeners, etc., allo Shadow DOM utilizzando i comuni DOM methods.
● Definire eventuali template e slot.
È possibile clonare i templates e farne l’attach allo Shadow DOM utilizzando i comuni DOM methods.
● Utilizza il custom element dove vuoi!
Web Components
Poiché il supporto di Custom Element e ES2015 potrebbe non essere disponibile in tutti i browser, è possible utilizzare alcuni polyfill per supportare i
browser più vecchi e il codice ES5.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Design System
“Il Design System è un insieme di regole e linee guida che aiutano a
mantenere coerenza e continuità all’interno di un ecosistema digitale,
migliorando le performance produttive e fornendo all’utente una brand
experience familiare e adattiva su tutte le piattaforme.”
Frase trovata sull’Internet! :D
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Design System
A cosa sono utili:
● Aumentano la coerenza e la consistenza del brand;
● Offrono maggiore chiarezza e semplicità per l’utente;
● Mettono a disposizione strumenti rapidi per la coerenza e
consistenza.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Design System
Nel mondo del Frontend, i componenti sono gli elementi strutturali
riutilizzabili del nostro sistema di progettazione.
Ogni componente soddisfa una specifica interazione o esigenza
dell'interfaccia utente ed è creato appositamente per lavorare insieme
agli altri per creare coerenza nelle esperienze utente.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Design System
I Design System sono ampiamente utilizzati e resi disponibili dalle
aziende più importanti come Microsoft (Fluent), Google (Material) o
Salesforce (Lightning) e sono utili quando è essenziale allinearsi ad una
piattaforma o per sfruttare, a basso costo, uno stile consolidato.
Ognuno di questi Design System è spesso accompagnato da un set di componenti, che
viene offerto pubblicamente (quasi sempre open source) e che può essere utilizzato per
costruire le nostre applicazioni!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Ma dove li trovate i talks con i flashback!
Neanche in LOST avrebbero fatto di meglio...
...e mo’ torniamo avanti!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Come è strutturato?
Grazie ad una serie di packages, organizzati in un monorepo, abbiamo a
disposizione in un’unica suite sia collezioni di Web Components, che gli
strumenti per crearne di nostri o addirittura per creare interi Design System.
● @microsoft/fast-element
● @microsoft/fast-foundation
● @microsoft/fast-components
● @fluentui/web-components
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Come è strutturato?
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
@microsoft/fast-element
@microsoft/fast-foundation
@fluentui/web-components@microsoft/fast-components
FAST - Design System Libraries
Fast mette a disposizione due librerie di Web Components pronte all’uso,
che consentono di costruire rapidamente le nostre interfacce e seguendo
due stili differenti tra loro.
Queste librerie mettono a disposizione una pletora di componenti come
buttons, accordion, cards, menu e tanto altro.
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Libraries
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Libraries
@fluentui/web-components
È la libreria di componenti che consente di avere il look and feel delle
applicazioni dell’ecosistema Microsoft, in quanto basata su
Fluent Design System.
Se dobbiamo costruire un’interfaccia per l’ecosistema Microsoft, questa
probabilmente sarebbe la scelta migliore da fare!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Libraries
@microsoft/fast-components
È una libreria di componenti, basata su un Design System originale
chiamato FAST Frame, che offre una serie di customizzazioni maggiori
rispetto alla precedente e che consente quindi di avere maggiore
controllo sul theming.
Se dobbiamo costruire un’interfaccia più personale ed altamente
customizzabile, questa probabilmente sarebbe la scelta migliore da fare!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Libraries
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
@microsoft/fast-components & @fluentui/web-components
● Design System Provider
● Custom Styles
● Direction-based styles:
○ DirectionalStyleSheetBehavior
○ inlineStartBehavior and inlineEndBehavior
○ DesignSystemProvider Direction
● MatchMediaStylesheetBehavior
● Forced-colors stylesheets
FAST - Design System Custom
@microsoft/fast-foundation
FAST Foundation fornisce gli elementi essenziali per costruire un Design
System tutto nostro, perché mette a disposizione i componenti di base
che forniscono i modelli ed i comportamenti che non sarà quindi
necessario riscrivere.
Questi componenti, implementano la gestione dello stato, l'accessibilità, la navigazione da
tastiera e il modello di estensibilità e composizione, la gestione degli stili (colori
algoritmici, constrasti, RTL, …) e tanto altro in modo da non dover scrivere quel codice!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Custom
@microsoft/fast-foundation
Sia @fluentui/web-components che @microsoft/fast-components sono
costruiti con gli elementi di @microsoft/fast-foundation per creare i due
set di componenti.
Se dobbiamo costruire un Design System custom, questo sarà il punto di
partenza!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Custom
Un elemento fondamentale di FAST è un componente noto come
Design System Provider, che facilita l'utilizzo, la configurazione e la
propagazione del Design System attraverso un semplice Web Component
che corrisponde al provider del sistema di progettazione che è chiamato
FASTDesignSystemProvider.
Le proprietà del Design System infatti possono essere facilmente
sovrascritte semplicemente impostando il valore della proprietà
corrispondente nel provider. https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Custom
● Type-ramp via CSS Custom Properties
● Adaptive Color Algorithmic Colors,Palettes, Background color, Offsets / Deltas, Recipes
● Diverse modalità di setting per le Design System Properties
● use-defaults boolean attribute
● Nested Providers
● Extending DesignSystemProvider
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Custom Components
@microsoft/fast-element
FAST Element consente di creare Web Components completamente
nuovi, astraendo la complessità di realizzazione degli stessi e rendendo
quindi la creazione più semplice, potente ed immediata.
I componenti creati con FAST Element saranno conformi agli standard ma
altamente performanti!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Custom Components
@microsoft/fast-element
FAST Element ci offre:
● Gestione della sincronizzazione di attributi/proprietà;
● Un approccio Model-View-ViewModel (MVVM);
● Rendering/aggiornamento efficiente dei modelli;
● Composizione dello stile;
● ...e tanto altro!
@microsoft/fast-element è circa 10kb (minimizzata e GZipped) ma essendo stata progettata tree-shaking driven,
qualsiasi funzionalità che non utilizzi durante la creazione di un componente verrà rimossa durante la creazione,
consentendo bundle altamente efficienti. https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Design System Libraries
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
@microsoft/fast-element
● @customElement
● @attr / propertyNameChanged Method
Customizable Reflection (reflect & converter, boolean, fromView)
● Automatic ShadowRoot
Slot API
● LifeCycle
● Decoratori Opzionali (definition field)
FAST - Design System Libraries
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
@microsoft/fast-element
● Templating System html tagged template helper, Content, Attributes, Properties
● Styling System css tagged template helper, Composition, Host & Slotted Selector, LifeCycle
● Directives when, repeat, ref, children, slotted
● @observable / propertyNameChanged Method
● Host Directive Template
● Internal & External observation
● Custom Events
Vediamo qualche esempio!
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST - Tools & Integrazioni
I tools suggeriti dal team FAST:
● Component Explorer
● Visual Studio Code - literally-html plugin & es6-string-css plugin
Le Guide per le integrazioni con i migliori Framework:
Angular, ASP.NET, Aurelio, Blazor...
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
FAST Links
● FAST Doc
● FAST Repo
● FluentUI WC
● FAST Twitter
● FAST Discord
● Eisenberg Twitter
● Presentazione FAST
● StackBlitz
https://fast-design-xq4fmd.stackblitz.io
Qualche Links
Web Components Docs
● W3C Web Components
● Google Web Fundamentals
● Google WC Best Practices
● Custom Elements Everywhere
● Open WC
● WebComponents.org
● MDN Web Components
● WC - The right way
● WC Everywhere
● WC Gold Best Practices
● Constructable Stylesheet
● Template Instantiation
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
Iscriviti al Canale YouTube: https://www.youtube.com/c/devmy
https://devmy.it
Francesco Sciuti - Microsoft MVP / Google Developer Certified
https://www.facebook.com/Devmy.it
https://www.linkedin.com/company/devmyfactory/
https://twitter.com/DevmyFactory
https://www.instagram.com/Devmy.it/
https://www.youtube.com/c/devmy
Seguici su:
E se vuoi rimanere aggiornato su tutte le novità ma non sei troppo social,
iscriviti alla nostra newsletter: http://eepurl.com/gb890v
Fast - UI System, Utilities
& Tools - Frontend
firmato Microsoft
Francesco Sciuti
CEO @ Devmy - Microsoft MVP, Google Certified Developer & AWS UG Lead
Grazie a tutti!

Mais conteúdo relacionado

Mais procurados

Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
DotNetCampus
 
Costruisci il tuo device
Costruisci il tuo deviceCostruisci il tuo device
Costruisci il tuo device
DotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 

Mais procurados (20)

2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
jQuery
jQueryjQuery
jQuery
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
 
Costruisci il tuo device
Costruisci il tuo deviceCostruisci il tuo device
Costruisci il tuo device
 
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web Design
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDays
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
Esempi pratici
Esempi praticiEsempi pratici
Esempi pratici
 

Semelhante a Microsoft Fast - Overview

Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
DotNetMarche
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
Stefano Fago
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
Michael Denny
 
Studio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso BootstrapStudio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso Bootstrap
Davide Polotto
 

Semelhante a Microsoft Fast - Overview (20)

Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
UX Engineering: il ruolo dello sviluppo nel design dell'esperienza utente
UX Engineering: il ruolo dello sviluppo nel design dell'esperienza utenteUX Engineering: il ruolo dello sviluppo nel design dell'esperienza utente
UX Engineering: il ruolo dello sviluppo nel design dell'esperienza utente
 
Flash vs jQuery
Flash vs jQueryFlash vs jQuery
Flash vs jQuery
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
WordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenzeWordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenze
 
Come strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPressCome strutturare un design semplice ed efficace per WordPress
Come strutturare un design semplice ed efficace per WordPress
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
 
Rich Internet Application con Flex, AIR e Java
Rich Internet Application con Flex, AIR e JavaRich Internet Application con Flex, AIR e Java
Rich Internet Application con Flex, AIR e Java
 
Session isolation e rendering delle pagine web
Session isolation e rendering delle pagine webSession isolation e rendering delle pagine web
Session isolation e rendering delle pagine web
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
SMAU Milano 2015
SMAU Milano 2015SMAU Milano 2015
SMAU Milano 2015
 
Studio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso BootstrapStudio e sviluppo di un sito web responsive attraverso Bootstrap
Studio e sviluppo di un sito web responsive attraverso Bootstrap
 
Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT oriented
 

Mais de Francesco Sciuti

Mais de Francesco Sciuti (12)

Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!
 
Creare PWA con Angular
Creare PWA con AngularCreare PWA con Angular
Creare PWA con Angular
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di node
 
Acadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS TodayAcadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS Today
 
Acadevmy - PWA Overview
Acadevmy - PWA OverviewAcadevmy - PWA Overview
Acadevmy - PWA Overview
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code Overview
 
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostri
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostriAcadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostri
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostri
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript Overview
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular Overview
 
Acadevmy - Google Conversation design
Acadevmy - Google Conversation designAcadevmy - Google Conversation design
Acadevmy - Google Conversation design
 
Acadevmy - PWA & Angular
Acadevmy - PWA & AngularAcadevmy - PWA & Angular
Acadevmy - PWA & Angular
 
Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!
 

Microsoft Fast - Overview

  • 1. Francesco Sciuti CEO @ Devmy - Microsoft MVP, Google Certified Developer & AWS UG Lead Fast - UI System, Utilities & Tools - Frontend firmato Microsoft
  • 3. Agenda - Cos’è FAST? - Cosa sono i Web Components? - Cosa è un Design System? - I Packages - @microsoft/fast-element - @microsoft/fast-foundation - @microsoft/fast-components - @fluentui/web-components - Un po’ di codice ;) - I Tools e le Integrazioni con i Framework
  • 4. Chi sono? @FrancescoSciuti https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified Developer per scelta e per passione, amante di nerdaggini di ogni tipo ed amante della condivisione del sapere!
  • 5. Software Factory ● Project Management ● Architecture Design ● Team Augmentation ● Code Review ● Mentoring ● Outsourcing https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified Learning Factory ● Formazione in azienda ● Corsi e Workshop ● Eventi online e offline
  • 6. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified Le tecnologie che prediligiamo
  • 7. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified Iscriviti al Canale YouTube: https://www.youtube.com/c/devmy
  • 8. FAST ma ora parliamo di https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 9. FAST - Cosa è? “FAST è una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide più comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.” FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 10. FAST - Cosa è? FAST è un progetto open-source di Microsoft. Viene presentato qualche mese fa da Rob Eisenberg (Principal UX Architecture and Tools Lead @Microsoft) durante una .NET Community Standup. FAST è l’acronimo di: Functional, Adaptive, Secure e Timeless. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 11. FAST - Cosa fa? Nello specifico ci aiuta a: ● Creare componenti per la UI basati su Web Components; ● Usare dei pre-built components messi a disposizione da FAST; ● Scegliere tra due Design System messi a disposizione da FAST; ● Scrivere un intero Design System senza dover re-implementare la component logic; ● Integrare il tutto con qualunque front-end framework! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 12. FAST - Cosa è? https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 13. FAST - Come lo fa? Adottare il più possibile approcci aperti e basati su standard web. Web Component Standard FAST si basa direttamente sugli standard W3C sui Web Component e non crea il proprio modello per i componenti. Framework Agnostic FAST è agnostico rispetto ai framework e ciò gli consente di poter essere integrato con Angular, Blazor, React, Vue o qualsiasi altro framework. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 14. Tutto molto bello ma facciamo un passo indietro! Un piccolo e breve ripasso forse non farà male. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 15. Web Components “Rendere il più possibile il nostro codice riusabile è senz’altro una eccellente idea!” Un programmatore qualunque https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 16. Web Components I Web Components sono una collezione di differenti tecnologie che ci consentono di utilizzare elementi custom per le nostre web application, incapsulando ed isolando le funzionalità dal resto del codice. https://developer.mozilla.org/en-US/docs/Web/Web_Components Insomma la possibilità di realizzare tags custom per le nostre web application in maniera del tutto agnostica e senza l’uso di framework. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 17. Web Components ● Deve essere un elemento HTML custom. ● Dovrebbe contenere tutta la logica per funzionare da solo. ● Non deve influenzare involontariamente altri componenti e altre parti dell'applicazione. ● Deve gestire l’incapsulamento per evitare collisioni tra JavaScript o CSS esterni. ● Più istanze dello stesso componente non devono interferire tra loro. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 18. ● Custom Elements Le JavaScript API che consentono di definire gli elementi custom ed i loro comportamenti e come possono essere usate nelle nostre web application. ● Shadow DOM Le JavaScript API che consentono di creare un DOM specifico per l’elemento chiamato shadow. Grazie a questo DOM, che viene renderizzato separatamente dal main DOM, viene garantito l’incapsulamento di comportamenti ed elementi privati, così che non possano collidere con il resto della pagina in cui l’elemento viene ospitato. ● HTML templates I tag template e slot ci consentono di riutilizzare markup e definire le posizioni di rendering, diventando così la base di costruzione di elementi custom. Web Components Ecco i mattoncini per costruire Web Components: Gli HTML Modules sono in realtà la quarta tecnologia nello stack, ma non è ancora stata implementata a dovere in tutti i più importanti browser. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 19. ● Creare una Classe con la ECMAScript 2015 class syntax. ● Registrare il custom element con il metodo CustomElementRegistry.define() indicando il nome dell’elemento e la classe. È anche possibile indicare un tag nativo dal quale ereditare. ● Eseguire, se lo si ritiene opportuno, l’attach dello Shadow DOM usando il metodo Element.attachShadow(). È possibile aggiungere child elements, event listeners, etc., allo Shadow DOM utilizzando i comuni DOM methods. ● Definire eventuali template e slot. È possibile clonare i templates e farne l’attach allo Shadow DOM utilizzando i comuni DOM methods. ● Utilizza il custom element dove vuoi! Web Components Poiché il supporto di Custom Element e ES2015 potrebbe non essere disponibile in tutti i browser, è possible utilizzare alcuni polyfill per supportare i browser più vecchi e il codice ES5. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 20. Design System “Il Design System è un insieme di regole e linee guida che aiutano a mantenere coerenza e continuità all’interno di un ecosistema digitale, migliorando le performance produttive e fornendo all’utente una brand experience familiare e adattiva su tutte le piattaforme.” Frase trovata sull’Internet! :D https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 21. Design System A cosa sono utili: ● Aumentano la coerenza e la consistenza del brand; ● Offrono maggiore chiarezza e semplicità per l’utente; ● Mettono a disposizione strumenti rapidi per la coerenza e consistenza. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 22. Design System Nel mondo del Frontend, i componenti sono gli elementi strutturali riutilizzabili del nostro sistema di progettazione. Ogni componente soddisfa una specifica interazione o esigenza dell'interfaccia utente ed è creato appositamente per lavorare insieme agli altri per creare coerenza nelle esperienze utente. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 23. Design System I Design System sono ampiamente utilizzati e resi disponibili dalle aziende più importanti come Microsoft (Fluent), Google (Material) o Salesforce (Lightning) e sono utili quando è essenziale allinearsi ad una piattaforma o per sfruttare, a basso costo, uno stile consolidato. Ognuno di questi Design System è spesso accompagnato da un set di componenti, che viene offerto pubblicamente (quasi sempre open source) e che può essere utilizzato per costruire le nostre applicazioni! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 24. Ma dove li trovate i talks con i flashback! Neanche in LOST avrebbero fatto di meglio... ...e mo’ torniamo avanti! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 25. FAST - Come è strutturato? Grazie ad una serie di packages, organizzati in un monorepo, abbiamo a disposizione in un’unica suite sia collezioni di Web Components, che gli strumenti per crearne di nostri o addirittura per creare interi Design System. ● @microsoft/fast-element ● @microsoft/fast-foundation ● @microsoft/fast-components ● @fluentui/web-components https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 26. FAST - Come è strutturato? https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified @microsoft/fast-element @microsoft/fast-foundation @fluentui/web-components@microsoft/fast-components
  • 27. FAST - Design System Libraries Fast mette a disposizione due librerie di Web Components pronte all’uso, che consentono di costruire rapidamente le nostre interfacce e seguendo due stili differenti tra loro. Queste librerie mettono a disposizione una pletora di componenti come buttons, accordion, cards, menu e tanto altro. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 28. FAST - Design System Libraries https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 29. FAST - Design System Libraries @fluentui/web-components È la libreria di componenti che consente di avere il look and feel delle applicazioni dell’ecosistema Microsoft, in quanto basata su Fluent Design System. Se dobbiamo costruire un’interfaccia per l’ecosistema Microsoft, questa probabilmente sarebbe la scelta migliore da fare! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 30. FAST - Design System Libraries @microsoft/fast-components È una libreria di componenti, basata su un Design System originale chiamato FAST Frame, che offre una serie di customizzazioni maggiori rispetto alla precedente e che consente quindi di avere maggiore controllo sul theming. Se dobbiamo costruire un’interfaccia più personale ed altamente customizzabile, questa probabilmente sarebbe la scelta migliore da fare! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 31. FAST - Design System Libraries https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified @microsoft/fast-components & @fluentui/web-components ● Design System Provider ● Custom Styles ● Direction-based styles: ○ DirectionalStyleSheetBehavior ○ inlineStartBehavior and inlineEndBehavior ○ DesignSystemProvider Direction ● MatchMediaStylesheetBehavior ● Forced-colors stylesheets
  • 32. FAST - Design System Custom @microsoft/fast-foundation FAST Foundation fornisce gli elementi essenziali per costruire un Design System tutto nostro, perché mette a disposizione i componenti di base che forniscono i modelli ed i comportamenti che non sarà quindi necessario riscrivere. Questi componenti, implementano la gestione dello stato, l'accessibilità, la navigazione da tastiera e il modello di estensibilità e composizione, la gestione degli stili (colori algoritmici, constrasti, RTL, …) e tanto altro in modo da non dover scrivere quel codice! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 33. FAST - Design System Custom @microsoft/fast-foundation Sia @fluentui/web-components che @microsoft/fast-components sono costruiti con gli elementi di @microsoft/fast-foundation per creare i due set di componenti. Se dobbiamo costruire un Design System custom, questo sarà il punto di partenza! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 34. FAST - Design System Custom Un elemento fondamentale di FAST è un componente noto come Design System Provider, che facilita l'utilizzo, la configurazione e la propagazione del Design System attraverso un semplice Web Component che corrisponde al provider del sistema di progettazione che è chiamato FASTDesignSystemProvider. Le proprietà del Design System infatti possono essere facilmente sovrascritte semplicemente impostando il valore della proprietà corrispondente nel provider. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 35. FAST - Design System Custom ● Type-ramp via CSS Custom Properties ● Adaptive Color Algorithmic Colors,Palettes, Background color, Offsets / Deltas, Recipes ● Diverse modalità di setting per le Design System Properties ● use-defaults boolean attribute ● Nested Providers ● Extending DesignSystemProvider https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 36. FAST - Custom Components @microsoft/fast-element FAST Element consente di creare Web Components completamente nuovi, astraendo la complessità di realizzazione degli stessi e rendendo quindi la creazione più semplice, potente ed immediata. I componenti creati con FAST Element saranno conformi agli standard ma altamente performanti! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 37. FAST - Custom Components @microsoft/fast-element FAST Element ci offre: ● Gestione della sincronizzazione di attributi/proprietà; ● Un approccio Model-View-ViewModel (MVVM); ● Rendering/aggiornamento efficiente dei modelli; ● Composizione dello stile; ● ...e tanto altro! @microsoft/fast-element è circa 10kb (minimizzata e GZipped) ma essendo stata progettata tree-shaking driven, qualsiasi funzionalità che non utilizzi durante la creazione di un componente verrà rimossa durante la creazione, consentendo bundle altamente efficienti. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 38. FAST - Design System Libraries https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified @microsoft/fast-element ● @customElement ● @attr / propertyNameChanged Method Customizable Reflection (reflect & converter, boolean, fromView) ● Automatic ShadowRoot Slot API ● LifeCycle ● Decoratori Opzionali (definition field)
  • 39. FAST - Design System Libraries https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified @microsoft/fast-element ● Templating System html tagged template helper, Content, Attributes, Properties ● Styling System css tagged template helper, Composition, Host & Slotted Selector, LifeCycle ● Directives when, repeat, ref, children, slotted ● @observable / propertyNameChanged Method ● Host Directive Template ● Internal & External observation ● Custom Events
  • 40. Vediamo qualche esempio! https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 41. FAST - Tools & Integrazioni I tools suggeriti dal team FAST: ● Component Explorer ● Visual Studio Code - literally-html plugin & es6-string-css plugin Le Guide per le integrazioni con i migliori Framework: Angular, ASP.NET, Aurelio, Blazor... https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 42. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 43. FAST Links ● FAST Doc ● FAST Repo ● FluentUI WC ● FAST Twitter ● FAST Discord ● Eisenberg Twitter ● Presentazione FAST ● StackBlitz https://fast-design-xq4fmd.stackblitz.io Qualche Links Web Components Docs ● W3C Web Components ● Google Web Fundamentals ● Google WC Best Practices ● Custom Elements Everywhere ● Open WC ● WebComponents.org ● MDN Web Components ● WC - The right way ● WC Everywhere ● WC Gold Best Practices ● Constructable Stylesheet ● Template Instantiation https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified
  • 44. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified Iscriviti al Canale YouTube: https://www.youtube.com/c/devmy
  • 45. https://devmy.it Francesco Sciuti - Microsoft MVP / Google Developer Certified https://www.facebook.com/Devmy.it https://www.linkedin.com/company/devmyfactory/ https://twitter.com/DevmyFactory https://www.instagram.com/Devmy.it/ https://www.youtube.com/c/devmy Seguici su: E se vuoi rimanere aggiornato su tutte le novità ma non sei troppo social, iscriviti alla nostra newsletter: http://eepurl.com/gb890v
  • 46. Fast - UI System, Utilities & Tools - Frontend firmato Microsoft Francesco Sciuti CEO @ Devmy - Microsoft MVP, Google Certified Developer & AWS UG Lead Grazie a tutti!