SlideShare ist ein Scribd-Unternehmen logo
1 von 91
Downloaden Sie, um offline zu lesen
IONIC 4
+
ANGULAR 7
+
CAPACITOR
21 Marzo 2019
Marino Di Clemente
@kernelfolla
Web Developer
#1 PERCHÈ JS?
–David Wheeler
“All problems in computer science can be solved by
another level of indirection”.
INDIRECTION
“Compatibility means deliberately repeating other
people's mistakes.”.
COMPATIBILITY
https://xkcd.com/1266/
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
add
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
multiply
add
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
push z
multiply
add
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
push y
push z
multiply
add
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
push x
push y
push z
multiply
add
push u
add
ABSTRACT SYNTAXTREE
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
Y
X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
Z
Y
X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
Y*Z
X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
(Y*Z)+X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
U
(Y*Z)+X
EXECUTION 

STACK
push x
push y
push z
multiply
add
push u
add
INTERMEDIATE 

REPRESENTATION
STACK BASED VIRTUAL MACHINE
((Y*Z)+X)+U
EXECUTION 

STACK
1975 NIKLAUS WIRTH PASCAL

P-CODE MACHINE
6 AGOSTO 1991

TIM BERNERS LEE
PUBBLICA IL PRIMO SITO WEB
23 GENNAIO 1993

MARC ANDREESSEN E ERIC BINA

PUBBLICANO MOSAIC
23 MAGGIO 1994

JIM(JAMES) CLARK E MARC ANDREESSEN

PUBBLICANO 

NETSCAPE NAVIGATOR
23 MAGGIO 1995

SUN PUBBLICA JAVA
https://en.wikipedia.org/wiki/Lars_Bak_(computer_programmer)
~1999 - Java Hotspot (JIT)
MAGGIO 1995

A 34 ANNI BRENDAN EICH

SCRIVE JAVASCRIPT IN 10 GIORNI
https://www.youtube.com/watch?v=GxouWy-ZE80
ispirato da SCHEME(dialetto del LISP) per il FRONTEND

ispirato da JVM per il BACKEND
So in 10 days in May 1995, I wrote
A lexical scanner and parser for early JS
The parser emitted stack-machine bytecode
Which ran in a bytecode interpreter
Function.prototype.toString bytecode decompiler
The standard library was poor
Array was Object with .length property
Date hand-ported (h/t ksmith@netscape.com) from java.util.Date
https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
16 AGOSTO 1995

MICROSOFT PUBBLICA

INTERNET EXPLORER
2007 - IPHONE
https://www.youtube.com/watch?v=y1B2c3ZD9fk&feature=youtu.be&t=4414
10 LUGLIO 2008 - APP STORE

2 SETTEMBRE 2008 - CHROME

23 SETTEMBRE 2008 -ANDROID
DALVIK ART
ANDROID != JAVA
–Steve Jobs
“New open standards created in the mobile era, such
as HTML5, will win on mobile devices (and PCs too).
Perhaps Adobe should focus more on creating great
HTML5 tools for the future, and less on criticizing
Apple for leaving the past behind.”.
APRILE 2010 -THOUGHTS ON FLASH
ORA ABBIAMO 

GLI STANDARD!
PERFORMANCE?
https://medium.com/@valeriocomo/web-assembly-710de9981c9
WEBASSEMBLY
EVENT LOOP
https://www.youtube.com/watch?v=8aGhZQkoFbQ
INTERPRETED + COMPILED JIT 

+ CODE CACHING 

+ SPECULATIVE OPTIMIZATIONS
https://developer.mozilla.org/it/docs/Web/JavaScript/EventLoop
https://github.com/felixrieseberg/windows95
JAVASCRIPT? O RLY?
ELM?TYPESCRIPT? FLOW? DART?
#2 IONIC
😢
HYBRID APP?
FLUTTER? (💖)
IONIC È UN WEB UI FRAMEWORK

CHE EMULA I WIDGET NATIVI
UTILIZZANDO WEB COMPONENTS
https://ionicframework.com/docs/components
WEB COMPONENTS
CUSTOM ELEMENTS
progetta e utilizza nuovi tipi di elementi DOM.
SHADOW DOM
utilizza gli stili incapsulati e il markup all'interno di un componente web.

HTML IMPORT
include e riutilizza il documento HTML in un altro documento HTML.
HTML TEMPLATE

dichiara i frammenti di codice che non verranno utilizzati durante il
caricamento della pagina, ma che potranno essere successivamente
istanziati in fase di runtime.

https://www.webcomponents.org/introduction
CUSTOM PROPERTIES
sono variabili definite nei CSS che contengono valori specifici da
riutilizzare e ridefinire in tutto il documento.

Le variabili CSS consentono di archiviare un valore in un unico posto,
quindi di fare riferimento in più altri posti.



Consentono inoltre di modificare il CSS in modo dinamico a runtime
(che in precedenza richiedeva un preprocessore CSS).



Le variabili CSS rendono più semplice che mai l'override dei
componenti.
https://ionicframework.com/docs/theming/css-variables
CSS VARIABLES
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
https://developer.mozilla.org/en-US/docs/Web/CSS/:host()
https://developer.mozilla.org/en-US/docs/Web/CSS/:host-context()
STENCILJS
• TypeScript support
• Asynchronous rendering pipeline
• A tiny virtual DOM layer
• One-way data binding
• JSX support
• Simple component lazy-loading
DECORATORS
• @Component() declares a new web component
• @Prop() declares an exposed property/attribute
• @State() declares an internal state of the component
• @Watch() declares a hook that runs when a property or state changes
• @Element() declares a reference to the host element
• @Method() declares an exposed public method
• @Event() declares a DOM event the component might emit
• @Listen() listens for DOM events
LIFECYCLE HOOKS
• componentWillLoad()
• componentDidLoad()
• componentWillUpdate()
• componentDidUpdate()
• componentDidUnload()
https://github.com/ionic-team/ionic/tree/master/core/src/components
https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
https://ionicframework.com/docs/api/button#slots
STENCILJS È FRAMEWORK AGNOSTIC
↓

IONIC USA STENCILJS
↓

IONIC È FRAMEWORK AGNOSTIC
IONIC REACT BETA
21 FEBBRAIO 2019
https://blog.ionicframework.com/announcing-the-ionic-react-beta/
COMPATIBILITÀ?
+
=
Capacitor is a cross-platform app runtime
that makes it easy to build web apps that
run natively on iOS,Android,
Electron, and the web.


We call these apps "Native Progressive
Web Apps" and they represent the next
evolution beyond Hybrid apps.
CAPACITOR?
BUILD?
https://capacitor.ionicframework.com/docs/basics/building-your-app/
CAPACITOR SUPPORTA I
PLUGIN DI CORDOVA
https://ionicframework.com/docs/native/
(OLTRE AD AVERE UN SUO SISTEMA DI PLUGIN)
https://capacitor.ionicframework.com/docs/plugins/
WEBVIEW
IOS
WKWEBVIEW
SAFARI
WEBKIT
ANDROID
WEBVIEW
CHROME
V8
ELECTRON

CHROMIUM
CHROME
V8
Nel Mondo
In Italia
ANGULAR 7REACT
-JSX
-components
-internal state
-props for configuration
-react router
-state management with redux
-typescript
-directives
-modules
-decorators
-components
-services
-dependency injection
-pipes
-templates
-change detection
-zones
-AoT compilation
-Rxjs
-Templates
-XSS protection
-Angular HttpClient
-Angular Routing
-CSS encapsulation
-Jasmine(testing)
-Angular Forms

-Angular Material
-Angular Animations
-React router
-Redux
-Jest(testing)

-Material UI
“COMPONENT DIRECTIVE”
ATTRIBUTE DIRECTIVE
STRUCTURAL DIRECTIVE
*NgIf *NgSwitch *NgFor
<p [directive]=“‘test’”>test</p>
https://netbasal.com/understanding-angular-structural-directives-659acd0f67e
https://netbasal.com/attribute-directives-angular-forms-b40503643089
MODULES
I moduli di angular sono contenitori. Possono contenere componenti,
provider di servizi e altri file di codice il cui ambito è definito dal
modulo che lo contiene. Possono importare funzionalità esportate da
altri moduli ed esportare funzionalità selezionate per l'uso da parte di
altri moduli.
APP MODULE
RXJS
composing asynchronous and event-based programs by using
observable sequences
imperative programming => declarative programming
RxJS is a library for reactive programming using Observables
promise on steroids
https://rxjs-dev.firebaseapp.com/
PIPE
HTTP INTERCEPTOR
MONDI DIVERSI
STESSI PROBLEMI
WANNA GO DEEPER?
DOMANDE?
GRAZIE!
kernelfolla@gmail.com
https://www.facebook.com/kernelfolla

https://www.twitter.com/kernelfolla

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (6)

Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
 
WoT Tutorial @ Cisco
WoT Tutorial @ CiscoWoT Tutorial @ Cisco
WoT Tutorial @ Cisco
 
WoT @ Oracle-Labs
WoT @ Oracle-LabsWoT @ Oracle-Labs
WoT @ Oracle-Labs
 
When Things will Speak "Web" (Lecture)
When Things will Speak "Web" (Lecture)When Things will Speak "Web" (Lecture)
When Things will Speak "Web" (Lecture)
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...
 

Ähnlich wie Ionic 4 + capacitor + angular 7

JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
Simon Willison
 

Ähnlich wie Ionic 4 + capacitor + angular 7 (20)

Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Play framework
Play frameworkPlay framework
Play framework
 
Firefox OS - HTML5 for a truly world-wide-web
Firefox OS - HTML5 for a truly world-wide-webFirefox OS - HTML5 for a truly world-wide-web
Firefox OS - HTML5 for a truly world-wide-web
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
Always on! Or not?
Always on! Or not?Always on! Or not?
Always on! Or not?
 
JEE on DC/OS
JEE on DC/OSJEE on DC/OS
JEE on DC/OS
 
JEE on DC/OS - MesosCon Europe
JEE on DC/OS - MesosCon EuropeJEE on DC/OS - MesosCon Europe
JEE on DC/OS - MesosCon Europe
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
Bending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptBending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScript
 
Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013
 
Cloud Computing Bootcamp On The Google App Engine v1.2.1
Cloud Computing Bootcamp On The Google App Engine v1.2.1Cloud Computing Bootcamp On The Google App Engine v1.2.1
Cloud Computing Bootcamp On The Google App Engine v1.2.1
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Electron Firenze 2020: Linux, Windows o MacOS?
Electron Firenze 2020: Linux, Windows o MacOS?Electron Firenze 2020: Linux, Windows o MacOS?
Electron Firenze 2020: Linux, Windows o MacOS?
 
Electron: Linux, Windows or Macos?
Electron: Linux, Windows or Macos?Electron: Linux, Windows or Macos?
Electron: Linux, Windows or Macos?
 
Cloud native java are we there yet go tech world 2019
Cloud native java   are we there yet  go tech world 2019Cloud native java   are we there yet  go tech world 2019
Cloud native java are we there yet go tech world 2019
 
Don't predict the future
Don't predict the futureDon't predict the future
Don't predict the future
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
 
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJSMeteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 

Ionic 4 + capacitor + angular 7