
ascoltatori di eventi è il modo in cui polimero
per fare in modo che fosse un google max
componente, ma diamo un’occhiata alla
copolimeri un po ‘più astrattamente
per vedere quali sono le caratteristiche dietro
quei componenti sono e il primo
caratteristica è che un componente è
questo significa che puoi mettere
più componenti più istanze
dello stesso componente sullo stesso schermo
senza che interferiscano l’ uno con l’altro
così indicare nel esempio abbiamo visto prima
avevamo per i componenti di Google Maps e
potrebbero essere controllati separatamente
senza che interferiscano l’uno con l’altro
un’altra caratteristica è che a
componente ha un input molto chiaro e
semantica di output e ciò significa che il
L’unico modo per manipolare un componente è
tramite gli input che esso ha fornito
per te e l’ unico modo in cui un componente può
manipolare il mondo esterno è attraverso
così come la semantica dell’output chiaramente definita
in questo caso gli input sono i
latitudine di longitudine e l’uscita era
l’ ascoltatore dell’evento che ne abbiamo aggiunto un altro
caratteristica è che un componente è
dichiarativo quindi abbiamo appena visto tutto questo
Componente Google Map in azione e it
è stato molto dichiarativo è stato molto facile
ma solo guardando il codice per
capire quale fosse il componente
effettivamente facendo e il finale
caratteristica è che un componente è
componibile e ciò che intendo per quello
che potresti prendere più piccoli
componenti per esempio un pulsante
componente e un componente di input
combinali per creare una ricerca
componente in modo che possiamo usare componenti come
Blocchi di lego per definire i componenti in
termini di altri componenti ed è a
meccanismo molto potente e tutti questi
caratteristiche che fanno componenti
molto facile ragionare perché a
il componente è isolato quando lo vedi
una pagina da qualche parte tu sai cosa
componente sta per fare mai lo vedi
nel codice da qualche parte sei abbastanza sicuro
cosa farà il componente e
perché un componente ha un input molto chiaro
e semantica di uscita come ei non lo fa
devono manipolare il mondo esterno
è molto facile capire il suo posto
nella tua domanda quindi per concludere
i componenti sono fantastici ma cosa
abbiamo appena visto un componente isolato
quindi ora la domanda è come costruiamo
app che usano solo componenti così a
Dimostrare che ho creato molto
semplice da fare in angular 2.0
e tutti probabilmente sanno come questo
questo funziona è possibile ordinare per farlo
attraversali e in fondo c’è
un footer e lì puoi passare
tra i componenti Stato per fare stato
che vuoi vedere ad esempio se tu
premere attivo si vedono solo i componenti
devi fare e dove clicchi
completato si vede solo il farlo
l’hai già fatto come ho detto
l’applicazione è stata realizzata in angular 2.0 e
è stato costruito dal seguente
componenti e ho rappresentato questo come
un albero è questa la cosa divertente
su un’applicazione basata su componenti
in realtà è un albero proprio come normale
Gli elementi Dom sarebbero su una pagina che sono
anche gli alberi, quindi quello che vediamo qui al
molto in alto è l’applicazione da fare e
questo è il cosiddetto componente radice che è
direttamente o indirettamente il
nonno di tutti gli altri componenti e
questo è un esempio di componibilità
quindi questa intera applicazione è fondamentalmente
un singolo componente dell’app e sul
proprio qui vediamo questa lista di cose da fare
componente che ha un numero N di
dedurre quali sono
sullo schermo e abbiamo anche un annuncio per
fare un componente che è fondamentalmente un input
elemento in cui si fa clic su entra su di esso
aggiungerà un nuovo da fare e abbiamo anche a
attiva tutti i componenti e quando fai clic
di controllare istantaneamente fuori tutta la vostra a
Deus e a sinistra abbiamo i filtri
componente che rappresenta il piè di pagina
che ha tutti e tre i componenti del filtro
attivo e completato ma se prendi un
guarda questo albero o qualsiasi albero che
rappresenta un’applicazione basata su componenti
potresti avere le seguenti domande
o almeno lo feci e la prima domanda
potresti avere dove si trova lo stato
vivere in questa applicazione e dallo stato I
significa dove sono tutti i negozi di cose da fare
dove è memorizzato quale filtro è
attualmente attivo e la seconda domanda
potreste avere è come fanno questi
i componenti comunicano tra loro
come fanno a farlo e a farlo a
un po ‘più concreto per fare questo
nell’esempio potremmo chiedere il primo
domanda in questo modo invece di dire
dove vive lo stato dove noi?
metti il filtro attivo corrente così se noi
dai un’occhiata al nostro albero che potremmo dire
inseriamo il filtro attivo corrente
il componente dei filtri perché quello è il
tutti hanno in comune quello che è
hanno lo stesso genitore in comune ma
allora ti rendi conto che il filtro attivo
è usato dentro per fare liste e in quello
componente è determinato quale filtro
per applicare ma poi si potrebbe discutere di mettere
la cosa nella radice dell’applicazione da fare
componente perché questo è il comune
genitore su questi due componenti così
quello che ho fatto l’ho messo nel fare
applicazione fino alla sommità ma
la risposta non è molto chiara, quindi puoi
fare il caso per ciascuno di questi tre
componenti e sarebbe probabilmente a
caso valido quindi questo non è un molto
risposta soddisfacente Lo so, ma più tardi
nella mia presentazione ti mostrerò un
modo di rendere questa domanda un po ‘
più facile rispondere ma per ora non lo è
sempre molto chiaro dove dovrebbe essere lo stato
vivere all’interno dell’albero delle applicazioni
in modo che ci porti alla seconda domanda
come i componenti comunicano e possiamo
chiedilo chiedendoti come fare
i filtri cambiano e come ho detto ho scelto
per mettere il filtro fino in cima
in un’applicazione da fare, quindi quando fai clic
a completare un alto o attivo in qualche modo
Devo comunicarlo fino in fondo
verso l’alto perché è lì che i dati
viene memorizzato in modo da quello che ho bisogno di fare è che ho bisogno
per collegare completamente questo clic invia
a suo padre e quando i filtri ce l’ha
ha bisogno di inviarlo un livello da fare
domanda quindi la cosa è che a
il componente non può comunicare a un altro
componente che non è direttamente correlato
ad esso in modo da poter andare solo dal bambino
al genitore dal genitore al
bambino, questo significa che la comunicazione
è un po ‘una seccatura perché il
più distanza c’è tra il
componente in cui si desidera
comunicare con per esempio qui noi
voglio comunicare dal blu
componente fino al rosso
componente puoi vedere che prima abbiamo bisogno
andare fino in cima e poi
tutto a destra così in fondo
queste due domande ne evidenziano due
debolezze di questa architettura così è
non sempre chiaro dove va lo stato
e comunicazione tra componenti
che non sono direttamente collegati a ciascuno
altro che è un po ‘di stronzo così
ora abbiamo visto componenti e abbiamo
visto due punti deboli quindi ora è il momento di
guarda un modo per mitigarli
debolezze e in questo caso ciò significa
dare un’occhiata a Redux quindi cos’è Redux
bene Redux è una libreria creata da un ragazzo
chiamato M Abramoff ed è il massimo
implementazione popolare del
architettura chiamata flusso quindi cos’è questo
flusso di cose che il flusso del pozzo è stato inventato
Facebook ed è un modo di fare
dati unidirezionali
e Fluxus è più un’idea e Redux
è una implementazione di quell’idea e
dal momento che è il più popolare che ho
scelto di concentrarsi maggiormente su Redux invece così
qual è l’idea dietro il flusso e il redux
beh l’idea è che abbiamo ancora il nostro
componente, ma stiamo per mettere
un altro concetto vicino all’albero e
questo concetto è chiamato
il negozio e ciò che fa il negozio è
fornisce tutto lo stato al
componentistica quindi non conserviamo più il nostro
stato in componenti memorizziamo ogni bit
di stato di questa applicazione in uno
variabile singola nel negozio e
ogni volta che si verifica un’azione, ad esempio noi
Dovremmo farlo controllare per fare o
siamo andate tutti a deuce o di controllo su un
filtrare un’azione viene inviata al negozio
e che manipola il negozio e poi
inviamo lo stato alla componentry
di nuovo così se lo guardiamo leggermente
diversamente come questo puoi vedere dove
l’unità di direzionalità viene da così
il negozio fornisce lo stato al
componentistica
la componente genera le azioni
le azioni manipolano il rialzo e questo
andrà in giro e il percorso in un singolo
loop ma sempre in una direzione che è
perché è unidirezionale quindi Redux e
flusso ci danno due risposte molto belle
alle nostre due domande quindi le due risposte
sono che tutto lo stato vive semplicemente nel
negozio quindi non dobbiamo più preoccuparci
su dove nel nostro componente ripristiniamo
stato e il secondo è che tutti gli eventi
percorso o sono percorso di eventi al negozio
quindi non abbiamo più bisogno di comunicare
tra due componenti direttamente noi
invia semplicemente tutti gli eventi al negozio
dove lo stato è manipolato così questo
era altamente teorica così quello che voglio
fare è un po ‘di più
pratico osservando alcuni reali
Riduci quindi voglio fare un altro caso
studiare questa somma di un molto semplice
applicazione che l’applicazione contatore
ci sono due pulsanti meno e più e
il numero tra loro quando tu
clicca più il numero aumenta quando tu
clicca meno il numero diminuisce lì
semplice quindi in redux è una cosa comune
definire tutte le tue azioni come scuole
definizioni quindi quello che vediamo qui abbiamo
due azioni contatore incrementale e
contatore di decremento e quindi abbiamo questi
contatore di incremento di due funzioni e
contatore di decremento e questi sono cosa
riduci chiama le funzioni del creatore di azioni
creano azioni alle quali possiamo inviare
il negozio e un’azione è sempre un
oggetto che ha una proprietà type e il
tipo proprietà identifica l’azione così
in questo caso ogni volta che chiamiamo il
funzione di contatore incrementale otteniamo a
oggetto semplice che dice di che tipo di
azione è così ora che abbiamo definito
le nostre azioni possiamo fare il prossimo passo
e possiamo vedere come possiamo creare un negozio
quindi, per prima cosa, impostiamo il
conteggio iniziale per azzerare il contatore inizia
contando a zero e poi facciamo un po ‘
un po ‘di riduzione magia diciamo Redux
crea un negozio e c’è un secondo
argomento ci vuole il nostro conteggio iniziale e
come primo argomento ci vuole questo
funzione dell’app contatore quindi cos’è questo
la funzione di contatore è chiamata a
riduttore e riduttore è una funzione
che prende il vecchio stato e un’azione
per applicare a quello stato e ci sono a
un paio di regole con il riduttore il
la prima regola è che un riduttore deve essere
puro, quindi ciò significa che non potremo mai
manipolare il vecchio stato direttamente noi
sempre bisogno di creare una nuova copia e il
la seconda regola è che ogni volta che si account
a un’azione che non ti conosci
semplicemente restituire lo stato in modo un in
riduttore gestiamo i nostri due tipi di azione
contatore di incremento e contatore di decremento
così ogni volta che incontriamo incrementiamo noi
aggiungetene uno quando incontriamo
decremento lo diminuiamo di uno così per
esempio se la nostra app contatore ha uno stato
di cinque e inviamo l’azione di incremento
sarà 5 + 1 in modo 6 sarà il nuovo
stato e questo è molto semplice
riduzione dell’occorrenza di riduzione così
framework agnostico quindi puoi usare redux
entrambi reagiscono o angolari o di qualsiasi altro tipo
di quadro ma è più orientato verso
reagire ad essere onesti quindi questo è stato molto
applicazione molto semplice in cui lo stato
era un numero intero che non è molto divertente quindi io
voglio farlo un po ‘di più
complesso questa volta aggiungendo il
possibilità di aggiungere dinamicamente
contatori e rimuovendoli dinamicamente
modo che il codice non dice tutto in un unico
Scivola quindi quello che ho fatto è per ogni azione
che c’è che ho creato il separato
Scivola quindi voglio fare il contatore di rimozione
prima ma diamo un’occhiata al
stato iniziale quindi questa volta non è un
numero è un oggetto e questo oggetto
ha due proprietà e un ID del contatore X che
puoi pensare come un’auto
incrementare l’ID su una tabella SQL è significato
per aumentare ogni volta che un nuovo contatore è
aggiunto quindi abbiamo E unico e il secondo
la proprietà è chiamata contatori che è a
chiave ti dice coppia in cui la chiave è
l’ID del contatore che indica
l’oggetto contatore e in questo caso noi
avere un singolo oggetto contatore che
inizia alle 42 quindi vediamo la rimozione
contatore azione creatore, ma questo è un
poco diverso questo prende un
argomento il contatore e questo è il
Contro che vogliamo rimuovere così
fondamentalmente quando hai queste azioni
hai sempre una proprietà di cravatta ma tu
puoi aggiungere tante altre proprietà come te
bisogno della tua azione e in questo caso
è solo il contatore e poi da qualche parte
all’interno del riduttore dobbiamo rimuovere
Contro e lì faccio questo piccolo trucco
con oggetto assegna per creare una copia di
lo stato attuale perché ricorda noi
non può manipolare lo stato esistente e
allora abbiamo semplicemente prendere il contatore dalla
azione e cancelliamo la chiave nella chiave
valore coppia mappa e quindi restituiamo il
stato e quindi abbiamo rimosso il
contrastare quindi in questo caso se chiamiamo
rimuovere il contatore con 1 quindi il conteggio 42
sarà rimosso poi poi dobbiamo
un contatore e non ha un
parametro perché non sappiamo quale
contatore che stiamo per creare
prima e nel riduttore di nuovo noi
crea una copia e poi la incrementiamo
successivo contatore ID manualmente in modo che il
la prossima volta avremo anche ID univoco e
allora prendiamo semplicemente quell’ID precedente e
assegnare ad un nuovo oggetto contatore che
inizia a contare a zero e anche questo
sa quale contatore è perché ha
il contatore ci tiene in esso
avere un contatore di incrementi che anche tu
è necessario fornire un ID contatore nell’azione
creatore in modo che possiamo identificare quale contatore
dobbiamo aumentare ancora copiamo il file
stato e prendiamo il contatore dal
dallo stato iniziale e incrementiamo
con un decremento è più o meno la stessa cosa
tranne che decrementa il conteggio di uno di questi
quello che vediamo qui è un esempio di più
applicazione di prodotti complessi e come te
puoi vedere che è consuetudine mettere il tuo
stato in questi oggetti in questo caso
stato iniziale e per quelli di voi che
pensa bene che se abbiamo molte azioni
questa istruzione switch diventerà davvero
davvero enorme e questo è vero ma
per fortuna possiamo creare multipli
riduttori per la stessa applicazione quindi noi
può dividerlo in base al dominio
entità che stiamo per manipolare
quindi non preoccuparti di questo
quindi i benefici di Redux sono avere un
risposta molto chiara dove mettere il
stati e come comunicare con
componenti ma ci sono anche un paio
di altri benefici e il primo vantaggio
è che Redux fa
universale JavaScript più facile Universal
JavaScript è l’arte del rendering
la tua applicazione su un server ODS e
inviandolo al browser che
ha benefici per il CEO e rende il tuo
l’applicazione rende più veloce e la ragione
perché è più facile in redux è perché tutto
dei tuoi stati si trova all’interno di a
variabile singola quindi è necessario solo impostare
quella variabile una volta e poi darla a
il tuo albero componente
e poi ottieni la tua interfaccia utente e potresti farlo
inviarlo di nuovo al browser, quindi se noi
non posso fidarmi di questo con gli Stati
situato in più componenti separati
dovremo fare molto lavoro solo per
ottenere quei componenti e assegnato il
stato correttamente, quindi devi scrivere a
molto più codice boilerplate quindi questo è il
primo vantaggio il secondo vantaggio è che
Redux ha uno sviluppatore sorprendentemente buono
esperienza dispiace
così i regali dicono più di mille parole
quindi quello che vediamo qui è un altro contatore
esempio ma questa volta con il
strumenti di sviluppo visualizzati a destra
quindi quello che vediamo qui è che ogni volta
che eseguiamo un’azione che vediamo sul
giusto e la barra nera lo vediamo
azione si verificano che possiamo anche fare clic su
quelle azioni per far finta che loro mai
è successo così è davvero bello ma tu
potrebbe anche fare è si può commettere Stati
e puoi anche caricare gli stati esterni
da JSON quindi se il tuo cliente dice hey I
trovato un bug nella tua applicazione
potrebbe chiedere loro di inviare lo stato corrente
e puoi caricarlo nel tuo locale
ambiente di sviluppo e vedere esattamente
quello che hanno visto è abbastanza carino
niente è perfetto comunque e Redux è
non è diverso quindi ci sono un paio di
aspetti negativi di Redux e il primo è
che ha una leggera curva di apprendimento si
devo conoscere i riduttori puri
funzioni immutabilità thunks ah gasp
è molto non difficile
impara ma c’è un leggero apprendimento
curva il secondo cono è un po ‘
più insidioso e questo deve farlo
javascript non è immutabile per natura così
javascript ti permette di cambiare
variabili quindi se per caso fanno
qualcosa nel tuo riduttore
cambia accidentalmente lo stato quindi il tuo
l’intera applicazione cadrà come un
castello di carte perché redux no
accetti di mutare lo stato così tu
Devo essere veramente disciplinato quando
scrivendo i tuoi riduttori per assicurarti che
non si manipola accidentalmente lo stato
per fortuna ci sono le librerie questo è
Sì immutabile anche su Facebook che
ti dà una collezione immutabile
biblioteca quindi in questo caso abbiamo questa mappa
ed elenca
rappresentano oggetti e cancella e
ogni volta che si esegue un’azione sulla mappa
orale o sulla lista si ottiene sempre un nuovo
copia e non modifichi mai l’esistente
oggetto in modo da poter usare sì immutabile a
attenuare un po ‘ questa debolezza ma
di nuovo usando questa libreria crei a
poco oltre e se necessario
comunicare con alcuni di terze parti
libreria che si aspetta oggetti normali
allora dovrai fare un po ‘di tubature
per dare quelle librerie di terze parti
oggetti normali invece di mappe immutabili
o belle liste così è stato riduttivo
che ci ha dato due buoni modi per mitigare
le due debolezze del componente
biblioteca e ora è tempo di dare un’occhiata
a programmazione reattiva e reattiva
programmazione che puoi usare per potenziare
i tuoi componenti evento asincrono
gestirlo è davvero potente per questo
quindi cos’è questa programmazione reattiva
cosa che definisce la programmazione reattiva è
spesso è più facile guardare ciò che chiamiamo
programmazione normale prima e nella
la comunità reattiva la chiamano passiva
programmazione e quale programmazione passiva
è che quando hai due componenti
un componente è responsabile di un altro
componente quindi in questo caso abbiamo una macchina
e abbiamo un motore e il motore
inizia ogni volta che si gira la chiave della macchina
in un certo senso, la componente del motore non lo è
nel controllo del proprio destino sempre
si blocca quando iniziare e nel codice
puoi vederlo così per la macchina
l’oggetto ha una proprietà del motore e
spara il motore ogni volta che la chiave è
girato così la programmazione reattiva in vs.
questa relazione così nel programma reattivo
il motore sa quando si accende e
la macchina non lo sa
manipola il motore e in questo caso
così fa il meccanismo di callback di Sophia
ogni volta che l’auto ha solo attivato l’evento
innescato il motore si accende e
questo mappa davvero bene al nostro componente
ai benefici dei componenti perché se
si scrive il componente reattivo tua
il componente ha il controllo proprio
destino e puoi davvero facilmente
capire come si reagisce solo componente
osservando la fonte del componente
perché ti dirà nella sua fonte
quando viene attivato manipolato o
fa qualche azione così i callback sono molto
scarso meccanismo sono relativamente
basso livello quindi ci sono le librerie
ci sono rxjs che zuppa questo
disco tutto quel meccanismo per renderlo più
potente
quindi rxjs proviene da una biblioteca di famiglie
chiamato X reattivo e quale X reattiva
è un po ‘ come una descrizione del protocollo
quindi è un grande è una grande descrizione di
tutti questi tipi di operazioni e
funzioni e metodi e poi cosa loro
è stato creato più
implementazioni in più differenti
lingue quindi c’è un RX c-sharp
c’è uno per m1 per JavaScript uno per
Scala uno per Java etc etc così solo da
imparare un insieme di operazioni e regole
puoi portare quella conoscenza a vari
altre lingue quindi quali sono i the
i principali concetti alla base del nostro SAS il primo
il concetto non è osservabile e cioè
qualcosa che puoi ascoltare che potrebbe
essere qualsiasi cosa
clic della tastiera Eventi del mouse Ajax
richieste che arrivano nell’invio di WebSockets
dati sopra la linea tutto ciò che puoi
ascolta puoi trasformarti in un
osservabile in rx a si al secondo
il concetto è quello delle operazioni e fino
raishin ti consente di manipolare il tuo
osservabili in modo da poter fondamentalmente eseguire
un’operazione inosservabile
e ottenere un nuovo osservabile in modo da
dimostrare come operare operazioni e
lavoro osservabile che ho creato questo
esempio pseudocodice e cosa vedi qui
su questa diapositiva è un osservabile chiamato a
che è una matrice di numeri di stringhe così
i numeri da 1 a 10 in forma di stringa quindi noi
può fare operazioni su quel flusso su quello
osservabile per esempio al numero e
cosa numerare quindi semplicemente prende il
stringa il numero e lo trasforma in un
numero intero
ma la parte reattiva è quella
ogni volta osservabile un cambiamento così per
esempio se aggiungiamo la stringa numero due
alla fine sarà osservato anche volontà
vengono aggiornati e ci arriveremo il numero due
aggiunto alla fine in modo che reagisca a
cambiamenti osservabili a così possiamo fare
più operazioni possiamo per esempio fare un
anche l’ operazione che filtra che il
impostato per includere solo
i numeri pari e di nuovo è reattivo
quindi se una modifica B verrà aggiornata se B
viene aggiornato C verrà aggiornato e noi
può fare una operazione finale chiamata
aggregato che conta il pari
numeri in questo caso, quindi quello che penso è
la bellezza della programmazione reattiva è
che puoi definire D lo sai
verrà aggiornato ogni volta che i suoi input
cambia tu non devi farlo
manualmente più te stesso
quindi è abbastanza potente per essere eseguito
giù completamente se siamo noi
stringa numero due in una B osservabile
otterremo il numero da aggiungere al
fine poi C otterrà anche il numero due
perché è un numero pari e quindi il
aggregato sarà 32 quindi è molto
roba forte così ora voglio spostare
dallo pseudo codice al reale reale
rx
e quello che voglio fare è che voglio prendere
un altro fa un altro caso di studio e questo
tempo guarda un esempio di completamento automatico così
tutti sanno senza il completo
si digita una query in una casella di ricerca
lo invia al back end e alla schiena
fine ti fornirà suggerimenti così
in questo caso cerchiamo americano e
ti darà alcuni spettacoli che iniziano
con American il completamento automatico è un
cosa sorprendentemente difficile da ottenere
completamente giusto quindi cosa voglio fare
prima voglio mostrarti ragazzi e
esempio imperfetto di un completamento automatico e
quindi voglio migliorarlo un po ‘alla volta
usando rxjs quindi ecco il codice il primo
cosa che dobbiamo fare è che dobbiamo ottenere un
riferimento a un elemento di input in questo
caso l’elemento di cui si può fare
la tua richiesta e poi facciamo qualche RSA
sì magia creiamo un osservabile per
ogni volta che l’elemento di input è una chiave
evento così ogni volta che l’utente inizia a digitare
in qualcosa che l’osservabile farà fuoco
e riceviamo eventi ma gli eventi che noi
ottenere sono eventi JavaScript che lo faranno
dirvi quale chiave è attiva se il
tasto shift è stato premuto e quale codice chiave
è stato inserito ma non siamo davvero
interessato a questo, quindi eseguiamo una mappa
operazione per ottenere il valore del bersaglio
qual è il contenuto effettivo del
elemento di input che attualmente abbiamo
quando l’evento è stato licenziato e poi lo facciamo
un’altra operazione mappa è che è
esattamente come la mappa es5
operazione che abbiamo su cancella esegue a
funziona su un input quindi in questo caso
quello che faremo è che lo faremo
prendi quella domanda e noi la daremo
a questa funzione di ricerca che fa un
richiesta di ajax al back-end e al
il back-end ci darà sperabilmente un po ‘
altri risultati di completamento e poi al
in basso vediamo questa funzione ISCRIVITI
e iscriviti puoi vedere come
il punto finale di un osservabile così
ogni volta che cambia qualcosa che siamo siamo
siamo abbonati
entriamo nel sottoscritto
operatore e l’ operatore di abbonamento ha
a funzioni come argomenti la funzione
la prima funzione è per ogni cosa
è andato bene per quando una cosa di successo
successo in questo caso quando il back-end
ci ha fornito altri risultati completati
e abbiamo anche un secondo fuoco
funziona l’errore che viene chiamato
ogni volta che si è verificato un errore per
esempio se il back-end non era disponibile
o non potrebbe fornirci risultati e
ogni volta che otteniamo un successo fuori a
completamento aggiorniamo l’interfaccia utente e ogni volta
le cose vanno male che abbiamo appena ignorarlo, perche
questo è quello che facciamo con gli errori e
iscriversi ‘ dovrebbe ricordarti delle promesse
quindi una promessa in JavaScript può essere solo
risolto una volta ma può essere osservabile
risolto molte volte così a volte in poi
nel web vedrai che chiamano
osservabili promette plus plus perché
hanno un po ‘di extra
funzionalità in cima alle promesse e
è anche molto facile in rxjs
per creare un osservabile da una promessa
ci sono funzioni per questo ma come me
detto questo esempio è imperfetto ci sono
un paio di cose che vanno male se tu
metti questo codice in produzione e il
la prima cosa è questo ragazzo così molto lento
si, quindi quello che vedi qui è che c’è
il tempo e alcune domande che noi
inviare al back-end, ma quello che voglio
Illustri è che ogni volta che digiti
una domanda in questo caso mi piace andare da noi
invia tutte le permutazioni di quella query a
il back – end quindi ciò che fondamentalmente abbiamo creato
è un modo molto conveniente per inviare spam
proprio server quindi in pratica ciò che vogliamo
facciamo è vogliamo dire solo inviare la query
al back- end se l’utente si è fermato
digitando per un po ‘questo è quello che noi
voglio fare così c’è un operatore per
che quell’operatore è chiamato debounce
e quello che vedi qui su questo schermo è
cos’è Rx e la famiglia di soluzioni reattive
di quadri chiamano così un diagramma di marmo
quello che un diagramma di meraviglia ti mostra è un è
un flusso di input l’operazione nel
in mezzo a questo caso rimbalzo
e ciò che il flusso risultante sarebbe
se quell’operazione è stata applicata così in questo
caso il flusso superiore ha uno due tre
quattro cinque e sei eventi s ma due tre
quattro e cinque sono davvero vicini
quindi, cosa farà il flusso risultante
filtrerà due tre e quattro
e ne manterrà solo cinque per poterli utilizzare
questo operatore per il nostro esempio da limitare
quantità di query che abbiamo inviato semplicemente
aggiungendo questo operatore di rimbalzo e poi
diciamo 500 che significa se l’utente si ferma
inattivo per mezzo secondo, quindi lo inviamo
al back- end e in questo modo impediamo
noi dallo spamming al nostro server, ma lo siamo
non c’è ancora ce n’è ancora un altro
La cosa è che se la tua query ha pochissimi
caratteri che spesso ottenere un sacco di
risultati che non sono veramente rilevanti
per quell’utente quindi in questo caso solo noi
ottenere buoni risultati se la nostra query è più grande
di tre caratteri e quindi cosa noi
voglio fare è se la query è inferiore a
che vogliamo solo ignorare quelli
domande e c’è un operatore per questo
anche questo è chiamato filtro e
cosa fa il filtro ci vuole un predicato
funzione e la funzione predicato è a
funzione che deve tornare a un falso
basato su un input e in questo caso
sarà se la X è più grande di 10 lo farà
lasciarli entrare così è per questo che puoi vedere
che i numeri che sono inferiori a 10
sono semplicemente ignorati, quindi possiamo usarli
il nostro esempio semplicemente chiamando il filtro
prima di fare il debounce
e prendiamo la domanda che abbiamo appena detto
consentitele solo se la lunghezza della query
è più grande di 3 quindi ora abbiamo risolto
quel problema, ma ovviamente non siamo fuori
dei boschi, ma c’è un altro problema
ancora e questo è quello che a volte mandiamo
la stessa domanda due volte di fila e questo
può succedere se l’utente preme l’invio
chiave, quindi quello che vediamo ora è che c’era
una finestra di cinque secondi tra il primo
andare a e il secondo andare a query e noi
tutti sanno che probabilmente non ne abbiamo di nuovi
risultati entro una finestra di cinque secondi così
quello che vogliamo fare è che vogliamo solo il
domanda
se la query è effettivamente cambiata da
prima e c’è un operatore per questo
anche questo è chiamato distinto
fino a quando non viene cambiato e quello che fa è esso
consentirà solo un evento se lo è
diverso da quello precedente e questo
è qualcosa che non abbiamo mai visto prima
quello che vediamo qui è un operatore che
ha uno stato interno questo operatore
tiene traccia della voce precedente che
è stato fatto in modo da poter avere operatori
che hanno stato così è carino
potente e come puoi vedere nel
flusso risultante abbiamo solo
valori alternati quindi applichiamo questo
operatore questa cosa non lo faranno
cambiato e ora inviamo solo query if
la query è effettivamente cambiata così ora noi
abbiamo quasi finito di averne uno
grosso problema ancora da risolvere e
questo problema è piuttosto ambiguo e
questo è questo così qui vediamo un tempo
linea e vediamo due query così l’utente
cercare per andare rapidamente a Rotterdam
capito che il go-to non è in
rotterdam ma ad amsterdam quindi abbiamo cambiato
questa domanda per andare ad Amsterdam ma ora noi
avere due richieste asincrone in
aria allo stesso tempo e se il tuo server
sta avendo un giorno di riposo
il risultato per andare ad Amsterdam potrebbe essere
potrebbe essere risolto prima prima del
risultati di andare a rotterdam quindi cosa voi
vedere è qualcosa di molto strano sei tu e
nella tua casella di domanda che vedi vai
Amsterdam per cosa vedi i risultati
andare a Rotterdam e il completamento automatico
che è molto strano e non qualcosa
che vogliamo avere quindi quello che vogliamo
facciamo è vogliamo esprimere l’idea di
solo usando i risultati dell’ultimo Ajax
richiesta che è stata inviata al backend così
come probabilmente hai indovinato, ora c’è
un operatore per questo è molto strano
nome si chiama mappa piatta ultima no
chiedimi perché ma fa esattamente quello che io
appena descritto quindi se ne hai più
richieste asincrone che utilizzerà solo
i risultati dell’ultima richiesta che era
fatto in modo che il bug che abbiamo appena visto è no
più un problema
quindi questo è l’esempio completo e come
potresti notare che è relativamente piccolo
ha poche righe di codici, ma lo fa
un sacco di lavoro e questo è il potere di
rxjs utilizzando queste operazioni standard
e la loro combinazione in modi intelligenti voi
ottenere un meccanismo veramente potente e se
Sono assolutamente onesto se dovessi scrivere
questo senza rxjs in puro JavaScript mio
il codice avrebbe probabilmente 500 linee Wow e
ci saranno probabilmente molti bug in
in quel codice così da stare in piedi
le spalle dei giganti in questo caso Raj
sì, puoi sfruttarli per realizzare
grandi cose in relativamente poche righe di
codice ma ce ne sono anche altri
benefici di rxjs e il primo vantaggio
è che il produttore e il consumatore
sono disaccoppiati quindi cosa intendo con quello
che il produttore in questo caso era il
evento chiave che ha sparato l’iniziale
evento e il consumatore doveva iscriversi
e fino a quando l’ abbonamento ha ottenuto il suo
serie di completamenti automatici è stato felice
quindi non importava quante operazioni noi
messo tra lì non abbiamo dovuto
cambiare il consumatore o il produttore noi
non ha dovuto cambiare quel codice così
questo è molto potente e ovviamente il
altro vantaggio che ho già spiegato
un po ‘ è che le operazioni sono a
blocco molto molto potente così tu
può combinarli in più interessanti
modi
di nuovo come blocchi di Lego e puoi ottenere
risultati davvero potenti ma non ci sono
davvero grande svantaggio di rzs e cioè
che ha un apprendimento molto molto ripido
curva e non mi piace chiamarla a
la curva di apprendimento mi piace chiamarla a
apprendimento scogliera perché questo nero
questa è una specie della mia esperienza con Rzs
ed è perché devi davvero
lasciar andare il vostro modello di importanza fondamentale perché
eri così abituato a manipolare sempre
variabili e non pensare nei flussi
che ci vuole un po ‘di tempo prima
che clicca nella tua testa ma una volta
è molto gratificante perché vedi
un sacco di problemi che vorresti
prevede la soluzione con imperativo
programmazione che puoi ora
con osservabili in un detergente più pulito
modo quindi vale sicuramente la pena guardare
e come hai visto dal completamento automatico
esempio è davvero molto potente
il secondo pettine è che il
la documentazione è molto concettuale
e quello che intendo è quello
a volte la documentazione si legge come
il progetto di tesi di qualcuno è fatto
davvero molto sì sì un abstract così dentro
questo caso restituisce una sequenza osservabile
che contiene solo continui distinti
elementi in base al selettore di chiave
e confronta quindi qual è il selettore di chiave
qual è il confronto di elementi continui
così qualcuno ha la più pallida idea di ciò
operatore è la descrizione per questo
operare sì esattamente
questo è il singolo fino a quando è cambiato
a volte quando io quando ci provo
programma in rx a si e ho incontrato
questa documentazione sono come oh questo è
non quello di cui ho bisogno e poi più tardi
trovare qualcosa su Stack Overflow poi
risulta Ho il diritto uno tutti insieme
ma questa documentazione non aiuta il
la documentazione è anche molto ti mostra
esempi non pratici quindi lo faremo
essere sempre come un array da 1 a 10 e
quindi applica l’ operazione in tal modo
non è sempre pratico quindi cosa desidero
che avrebbero fatto è che lo farebbero
utilizzare più esempi pratici in
documentazione così reattiva
programmare un bel strumento per potenziare
i tuoi eventi asincroni e questo porta
io ora siamo quasi alla fine del
presentazione ma è consuetudine per a
presentatore per darti alcuni ragazzi
raccomandazioni su come usare questi
tecnologie e la mia prima raccomandazione
potrebbe essere un po ‘controintuitivo, ma io
non consigliare l’uso di Redux o rsjs
se la tua app è veramente piccola
perché aggiungi un sacco di spese generali e
questo potrebbe non valerne la pena così per il
domanda da fare per il contatore
applicazione che utilizza i nostri SaaS o Redux è
davvero davvero eccessivo, ma se il tuo
l’applicazione inizia a sentirsi troppo grande e io
so che questo è un po ‘sdolcinato
sentimento ma sai quando arrivi
lì così all’improvviso avrai questo
applicazione e all’improvviso
non si adatta alla tua testa
non so dove dovrebbe essere lo stato
i nuovi membri del team non capiscono dove
la nostra cosa va allora potrebbe essere un bene
tempo di iniziare a usare Redux come ho detto
ha una piccola curva di apprendimento ma è così
abbastanza piccolo da permetterti di salire a bordo
membri del team
relativamente velocemente, ecco il mio secondo
raccomandazione se inizia a sentirsi troppo
grande basta usare Redux è un bel modo per
conserva il tuo stato la mia terza raccomandazione
è così quando hai eventi
richiede un sacco di coordinamento come noi
visto sull’esempio completo esterno tu
voglio fare alcune cose di livello superiore con
eventi asincroni che vuoi
sovralimentare un componente allora potrebbe essere
tempo di ingoiare la pillola rossa e iniziare
usando rxjs ma come ho detto ha molto
curva di apprendimento ripida quindi aspettatevi un po ‘
problemi di onboarding con i più recenti
sviluppatori perché devi prenderne un po ‘
il tempo per spiegare come funziona e come
usa rx a si quindi ti ho appena dato come a
50 minuti ogni presentazione sulla riduzione
programmazione reattiva e io a malapena
scalfito la superficie in modo da è che non è
abbastanza da sapere redux o RCS quindi cosa io
voglio fare è voglio scrivere una serie
di post sul blog per arricchire questi
gli argomenti un po ‘di più ti offrono ragazzi
con alcuni video con post sul blog da mostrare
voi ragazzi come imparare con condotti e
reagire per risolvere la cosa divertente di entrambi
Redux e fix reattivo sono tutti nostri
video disponibili il creatore di Redux ha
il suo corso su un kadai oh è gratis
puoi seguirlo e lo spiegherai
come costruire Redux e come usare Redux
quindi è molto bello quindi le persone sono io
non farti prendere dal panico per 42.000 elfi o per quello
serie e inizierò a inviarli
settimanale a partire da giovedì quindi è così
quasi abbiamo anche una posizione
al piano di sotto dove puoi giocare a fallout
Minigioco di base per l’hacking di terminali che puoi
vincere un grande premio una grande anatra di gomma e
Sono anche lì allo stand quindi se tu
voglio parlarmi di redux o rxjs
o programmazione reattiva vieni a trovarmi
quindi non dimenticarti di votare
la sessione e qualsiasi altra sessione quella
sei presente grazie
sì sì quindi c’è una domanda se il
lo stato diventa davvero davvero grande cosa
non le prestazioni che fare con Redux bene
naturalmente si degraderà perché tu
non posso tenere infinitamente un numero di
cose in memoria ma se usi
impaginazione o si inserisce solo nel negozio
ciò di cui hai bisogno al momento puoi farlo
attenuare che è regolare
JavaScript quindi non puoi continuare a inserire
memoria e ovviamente perderà un
un po ‘ di prestazioni va bene la memoria
perdite in redux non penso che sia quello
qualcosa che si può facilmente farlo perché
la riduzione dice che c’è un negozio di riduzione
per applicazione quindi non è così
incline a perdere perché c’è solo
un negozio e quel negozio avrà solo bisogno
da rimuovere quando l’utente chiude la sua
scheda così in questo modo le perdite di memoria non lo sono
che gran parte di un problema in redux
perché c’è solo un negozio e basta
si pulirà quando chiudi il
scheda quindi sì così così per darti ragazzi a
un po ‘di background così
model-view-controller contro il
architettura dei componenti quindi non l’ho nemmeno fatto
T l’architettura del componente
Sono stato davvero colpito in faccia così
siamo arrabbiati siamo un negozio angolare
42 angolari 1.0 e angolari 2.0 essi
andato a questa nuova architettura così ma il
la cosa è che la tendenza è andata
per un po ‘reagì così tanto
il primo ad abbracciare il componente
architettura un angolare seguito vestito
e il polimero è arrivato così tanto
le strutture si stanno muovendo verso componenti
quindi penso che se si aggiorna a
angolare 2 quasi non hai un
scelta andrai al componente
architettura ma la differenza tra
un componente e un controller di visualizzazione mobile
è solo che la componente interna è
fondamentalmente la combinazione di una vista e
un controller in una sola cosa ma
che la differenza è che è così
non prova a prenderli separatamente così
un controller di visualizzazione mobile spesso è a
molti parlano di
avere più controller per lo stesso
visualizzare e avere più viste per il
stesso controller e lo sappiamo tutti
questo non è segretamente vero che non ho mai
scritto un controller per più viste
o aggiungi la vista per un singolo
controller in modo davvero i componenti sono
fondamentalmente un modo per dire che riconosciamo
il fatto che siano sposati a ciascuno
altri quindi non fingiamo più quello
ci sono due entità separate , quindi è così
non troppo di un tratto per migrare e
nell’angolare 2 sono presenti le guide di aggiornamento
come fare
per fare in modo che fosse un google max
componente, ma diamo un’occhiata alla
copolimeri un po ‘più astrattamente
per vedere quali sono le caratteristiche dietro
quei componenti sono e il primo
caratteristica è che un componente è
questo significa che puoi mettere
più componenti più istanze
dello stesso componente sullo stesso schermo
senza che interferiscano l’ uno con l’altro
così indicare nel esempio abbiamo visto prima
avevamo per i componenti di Google Maps e
potrebbero essere controllati separatamente
senza che interferiscano l’uno con l’altro
un’altra caratteristica è che a
componente ha un input molto chiaro e
semantica di output e ciò significa che il
L’unico modo per manipolare un componente è
tramite gli input che esso ha fornito
per te e l’ unico modo in cui un componente può
manipolare il mondo esterno è attraverso
così come la semantica dell’output chiaramente definita
in questo caso gli input sono i
latitudine di longitudine e l’uscita era
l’ ascoltatore dell’evento che ne abbiamo aggiunto un altro
caratteristica è che un componente è
dichiarativo quindi abbiamo appena visto tutto questo
Componente Google Map in azione e it
è stato molto dichiarativo è stato molto facile
ma solo guardando il codice per
capire quale fosse il componente
effettivamente facendo e il finale
caratteristica è che un componente è
componibile e ciò che intendo per quello
che potresti prendere più piccoli
componenti per esempio un pulsante
componente e un componente di input
combinali per creare una ricerca
componente in modo che possiamo usare componenti come
Blocchi di lego per definire i componenti in
termini di altri componenti ed è a
meccanismo molto potente e tutti questi
caratteristiche che fanno componenti
molto facile ragionare perché a
il componente è isolato quando lo vedi
una pagina da qualche parte tu sai cosa
componente sta per fare mai lo vedi
nel codice da qualche parte sei abbastanza sicuro
cosa farà il componente e
perché un componente ha un input molto chiaro
e semantica di uscita come ei non lo fa
devono manipolare il mondo esterno
è molto facile capire il suo posto
nella tua domanda quindi per concludere
i componenti sono fantastici ma cosa
abbiamo appena visto un componente isolato
quindi ora la domanda è come costruiamo
app che usano solo componenti così a
Dimostrare che ho creato molto
semplice da fare in angular 2.0
e tutti probabilmente sanno come questo
questo funziona è possibile ordinare per farlo
attraversali e in fondo c’è
un footer e lì puoi passare
tra i componenti Stato per fare stato
che vuoi vedere ad esempio se tu
premere attivo si vedono solo i componenti
devi fare e dove clicchi
completato si vede solo il farlo
l’hai già fatto come ho detto
l’applicazione è stata realizzata in angular 2.0 e
è stato costruito dal seguente
componenti e ho rappresentato questo come
un albero è questa la cosa divertente
su un’applicazione basata su componenti
in realtà è un albero proprio come normale
Gli elementi Dom sarebbero su una pagina che sono
anche gli alberi, quindi quello che vediamo qui al
molto in alto è l’applicazione da fare e
questo è il cosiddetto componente radice che è
direttamente o indirettamente il
nonno di tutti gli altri componenti e
questo è un esempio di componibilità
quindi questa intera applicazione è fondamentalmente
un singolo componente dell’app e sul
proprio qui vediamo questa lista di cose da fare
componente che ha un numero N di
dedurre quali sono
sullo schermo e abbiamo anche un annuncio per
fare un componente che è fondamentalmente un input
elemento in cui si fa clic su entra su di esso
aggiungerà un nuovo da fare e abbiamo anche a
attiva tutti i componenti e quando fai clic
di controllare istantaneamente fuori tutta la vostra a
Deus e a sinistra abbiamo i filtri
componente che rappresenta il piè di pagina
che ha tutti e tre i componenti del filtro
attivo e completato ma se prendi un
guarda questo albero o qualsiasi albero che
rappresenta un’applicazione basata su componenti
potresti avere le seguenti domande
o almeno lo feci e la prima domanda
potresti avere dove si trova lo stato
vivere in questa applicazione e dallo stato I
significa dove sono tutti i negozi di cose da fare
dove è memorizzato quale filtro è
attualmente attivo e la seconda domanda
potreste avere è come fanno questi
i componenti comunicano tra loro
come fanno a farlo e a farlo a
un po ‘più concreto per fare questo
nell’esempio potremmo chiedere il primo
domanda in questo modo invece di dire
dove vive lo stato dove noi?
metti il filtro attivo corrente così se noi
dai un’occhiata al nostro albero che potremmo dire
inseriamo il filtro attivo corrente
il componente dei filtri perché quello è il
tutti hanno in comune quello che è
hanno lo stesso genitore in comune ma
allora ti rendi conto che il filtro attivo
è usato dentro per fare liste e in quello
componente è determinato quale filtro
per applicare ma poi si potrebbe discutere di mettere
la cosa nella radice dell’applicazione da fare
componente perché questo è il comune
genitore su questi due componenti così
quello che ho fatto l’ho messo nel fare
applicazione fino alla sommità ma
la risposta non è molto chiara, quindi puoi
fare il caso per ciascuno di questi tre
componenti e sarebbe probabilmente a
caso valido quindi questo non è un molto
risposta soddisfacente Lo so, ma più tardi
nella mia presentazione ti mostrerò un
modo di rendere questa domanda un po ‘
più facile rispondere ma per ora non lo è
sempre molto chiaro dove dovrebbe essere lo stato
vivere all’interno dell’albero delle applicazioni
in modo che ci porti alla seconda domanda
come i componenti comunicano e possiamo
chiedilo chiedendoti come fare
i filtri cambiano e come ho detto ho scelto
per mettere il filtro fino in cima
in un’applicazione da fare, quindi quando fai clic
a completare un alto o attivo in qualche modo
Devo comunicarlo fino in fondo
verso l’alto perché è lì che i dati
viene memorizzato in modo da quello che ho bisogno di fare è che ho bisogno
per collegare completamente questo clic invia
a suo padre e quando i filtri ce l’ha
ha bisogno di inviarlo un livello da fare
domanda quindi la cosa è che a
il componente non può comunicare a un altro
componente che non è direttamente correlato
ad esso in modo da poter andare solo dal bambino
al genitore dal genitore al
bambino, questo significa che la comunicazione
è un po ‘una seccatura perché il
più distanza c’è tra il
componente in cui si desidera
comunicare con per esempio qui noi
voglio comunicare dal blu
componente fino al rosso
componente puoi vedere che prima abbiamo bisogno
andare fino in cima e poi
tutto a destra così in fondo
queste due domande ne evidenziano due
debolezze di questa architettura così è
non sempre chiaro dove va lo stato
e comunicazione tra componenti
che non sono direttamente collegati a ciascuno
altro che è un po ‘di stronzo così
ora abbiamo visto componenti e abbiamo
visto due punti deboli quindi ora è il momento di
guarda un modo per mitigarli
debolezze e in questo caso ciò significa
dare un’occhiata a Redux quindi cos’è Redux
bene Redux è una libreria creata da un ragazzo
chiamato M Abramoff ed è il massimo
implementazione popolare del
architettura chiamata flusso quindi cos’è questo
flusso di cose che il flusso del pozzo è stato inventato
Facebook ed è un modo di fare
dati unidirezionali
e Fluxus è più un’idea e Redux
è una implementazione di quell’idea e
dal momento che è il più popolare che ho
scelto di concentrarsi maggiormente su Redux invece così
qual è l’idea dietro il flusso e il redux
beh l’idea è che abbiamo ancora il nostro
componente, ma stiamo per mettere
un altro concetto vicino all’albero e
questo concetto è chiamato
il negozio e ciò che fa il negozio è
fornisce tutto lo stato al
componentistica quindi non conserviamo più il nostro
stato in componenti memorizziamo ogni bit
di stato di questa applicazione in uno
variabile singola nel negozio e
ogni volta che si verifica un’azione, ad esempio noi
Dovremmo farlo controllare per fare o
siamo andate tutti a deuce o di controllo su un
filtrare un’azione viene inviata al negozio
e che manipola il negozio e poi
inviamo lo stato alla componentry
di nuovo così se lo guardiamo leggermente
diversamente come questo puoi vedere dove
l’unità di direzionalità viene da così
il negozio fornisce lo stato al
componentistica
la componente genera le azioni
le azioni manipolano il rialzo e questo
andrà in giro e il percorso in un singolo
loop ma sempre in una direzione che è
perché è unidirezionale quindi Redux e
flusso ci danno due risposte molto belle
alle nostre due domande quindi le due risposte
sono che tutto lo stato vive semplicemente nel
negozio quindi non dobbiamo più preoccuparci
su dove nel nostro componente ripristiniamo
stato e il secondo è che tutti gli eventi
percorso o sono percorso di eventi al negozio
quindi non abbiamo più bisogno di comunicare
tra due componenti direttamente noi
invia semplicemente tutti gli eventi al negozio
dove lo stato è manipolato così questo
era altamente teorica così quello che voglio
fare è un po ‘di più
pratico osservando alcuni reali
Riduci quindi voglio fare un altro caso
studiare questa somma di un molto semplice
applicazione che l’applicazione contatore
ci sono due pulsanti meno e più e
il numero tra loro quando tu
clicca più il numero aumenta quando tu
clicca meno il numero diminuisce lì
semplice quindi in redux è una cosa comune
definire tutte le tue azioni come scuole
definizioni quindi quello che vediamo qui abbiamo
due azioni contatore incrementale e
contatore di decremento e quindi abbiamo questi
contatore di incremento di due funzioni e
contatore di decremento e questi sono cosa
riduci chiama le funzioni del creatore di azioni
creano azioni alle quali possiamo inviare
il negozio e un’azione è sempre un
oggetto che ha una proprietà type e il
tipo proprietà identifica l’azione così
in questo caso ogni volta che chiamiamo il
funzione di contatore incrementale otteniamo a
oggetto semplice che dice di che tipo di
azione è così ora che abbiamo definito
le nostre azioni possiamo fare il prossimo passo
e possiamo vedere come possiamo creare un negozio
quindi, per prima cosa, impostiamo il
conteggio iniziale per azzerare il contatore inizia
contando a zero e poi facciamo un po ‘
un po ‘di riduzione magia diciamo Redux
crea un negozio e c’è un secondo
argomento ci vuole il nostro conteggio iniziale e
come primo argomento ci vuole questo
funzione dell’app contatore quindi cos’è questo
la funzione di contatore è chiamata a
riduttore e riduttore è una funzione
che prende il vecchio stato e un’azione
per applicare a quello stato e ci sono a
un paio di regole con il riduttore il
la prima regola è che un riduttore deve essere
puro, quindi ciò significa che non potremo mai
manipolare il vecchio stato direttamente noi
sempre bisogno di creare una nuova copia e il
la seconda regola è che ogni volta che si account
a un’azione che non ti conosci
semplicemente restituire lo stato in modo un in
riduttore gestiamo i nostri due tipi di azione
contatore di incremento e contatore di decremento
così ogni volta che incontriamo incrementiamo noi
aggiungetene uno quando incontriamo
decremento lo diminuiamo di uno così per
esempio se la nostra app contatore ha uno stato
di cinque e inviamo l’azione di incremento
sarà 5 + 1 in modo 6 sarà il nuovo
stato e questo è molto semplice
riduzione dell’occorrenza di riduzione così
framework agnostico quindi puoi usare redux
entrambi reagiscono o angolari o di qualsiasi altro tipo
di quadro ma è più orientato verso
reagire ad essere onesti quindi questo è stato molto
applicazione molto semplice in cui lo stato
era un numero intero che non è molto divertente quindi io
voglio farlo un po ‘di più
complesso questa volta aggiungendo il
possibilità di aggiungere dinamicamente
contatori e rimuovendoli dinamicamente
modo che il codice non dice tutto in un unico
Scivola quindi quello che ho fatto è per ogni azione
che c’è che ho creato il separato
Scivola quindi voglio fare il contatore di rimozione
prima ma diamo un’occhiata al
stato iniziale quindi questa volta non è un
numero è un oggetto e questo oggetto
ha due proprietà e un ID del contatore X che
puoi pensare come un’auto
incrementare l’ID su una tabella SQL è significato
per aumentare ogni volta che un nuovo contatore è
aggiunto quindi abbiamo E unico e il secondo
la proprietà è chiamata contatori che è a
chiave ti dice coppia in cui la chiave è
l’ID del contatore che indica
l’oggetto contatore e in questo caso noi
avere un singolo oggetto contatore che
inizia alle 42 quindi vediamo la rimozione
contatore azione creatore, ma questo è un
poco diverso questo prende un
argomento il contatore e questo è il
Contro che vogliamo rimuovere così
fondamentalmente quando hai queste azioni
hai sempre una proprietà di cravatta ma tu
puoi aggiungere tante altre proprietà come te
bisogno della tua azione e in questo caso
è solo il contatore e poi da qualche parte
all’interno del riduttore dobbiamo rimuovere
Contro e lì faccio questo piccolo trucco
con oggetto assegna per creare una copia di
lo stato attuale perché ricorda noi
non può manipolare lo stato esistente e
allora abbiamo semplicemente prendere il contatore dalla
azione e cancelliamo la chiave nella chiave
valore coppia mappa e quindi restituiamo il
stato e quindi abbiamo rimosso il
contrastare quindi in questo caso se chiamiamo
rimuovere il contatore con 1 quindi il conteggio 42
sarà rimosso poi poi dobbiamo
un contatore e non ha un
parametro perché non sappiamo quale
contatore che stiamo per creare
prima e nel riduttore di nuovo noi
crea una copia e poi la incrementiamo
successivo contatore ID manualmente in modo che il
la prossima volta avremo anche ID univoco e
allora prendiamo semplicemente quell’ID precedente e
assegnare ad un nuovo oggetto contatore che
inizia a contare a zero e anche questo
sa quale contatore è perché ha
il contatore ci tiene in esso
avere un contatore di incrementi che anche tu
è necessario fornire un ID contatore nell’azione
creatore in modo che possiamo identificare quale contatore
dobbiamo aumentare ancora copiamo il file
stato e prendiamo il contatore dal
dallo stato iniziale e incrementiamo
con un decremento è più o meno la stessa cosa
tranne che decrementa il conteggio di uno di questi
quello che vediamo qui è un esempio di più
applicazione di prodotti complessi e come te
puoi vedere che è consuetudine mettere il tuo
stato in questi oggetti in questo caso
stato iniziale e per quelli di voi che
pensa bene che se abbiamo molte azioni
questa istruzione switch diventerà davvero
davvero enorme e questo è vero ma
per fortuna possiamo creare multipli
riduttori per la stessa applicazione quindi noi
può dividerlo in base al dominio
entità che stiamo per manipolare
quindi non preoccuparti di questo
quindi i benefici di Redux sono avere un
risposta molto chiara dove mettere il
stati e come comunicare con
componenti ma ci sono anche un paio
di altri benefici e il primo vantaggio
è che Redux fa
universale JavaScript più facile Universal
JavaScript è l’arte del rendering
la tua applicazione su un server ODS e
inviandolo al browser che
ha benefici per il CEO e rende il tuo
l’applicazione rende più veloce e la ragione
perché è più facile in redux è perché tutto
dei tuoi stati si trova all’interno di a
variabile singola quindi è necessario solo impostare
quella variabile una volta e poi darla a
il tuo albero componente
e poi ottieni la tua interfaccia utente e potresti farlo
inviarlo di nuovo al browser, quindi se noi
non posso fidarmi di questo con gli Stati
situato in più componenti separati
dovremo fare molto lavoro solo per
ottenere quei componenti e assegnato il
stato correttamente, quindi devi scrivere a
molto più codice boilerplate quindi questo è il
primo vantaggio il secondo vantaggio è che
Redux ha uno sviluppatore sorprendentemente buono
esperienza dispiace
così i regali dicono più di mille parole
quindi quello che vediamo qui è un altro contatore
esempio ma questa volta con il
strumenti di sviluppo visualizzati a destra
quindi quello che vediamo qui è che ogni volta
che eseguiamo un’azione che vediamo sul
giusto e la barra nera lo vediamo
azione si verificano che possiamo anche fare clic su
quelle azioni per far finta che loro mai
è successo così è davvero bello ma tu
potrebbe anche fare è si può commettere Stati
e puoi anche caricare gli stati esterni
da JSON quindi se il tuo cliente dice hey I
trovato un bug nella tua applicazione
potrebbe chiedere loro di inviare lo stato corrente
e puoi caricarlo nel tuo locale
ambiente di sviluppo e vedere esattamente
quello che hanno visto è abbastanza carino
niente è perfetto comunque e Redux è
non è diverso quindi ci sono un paio di
aspetti negativi di Redux e il primo è
che ha una leggera curva di apprendimento si
devo conoscere i riduttori puri
funzioni immutabilità thunks ah gasp
è molto non difficile
impara ma c’è un leggero apprendimento
curva il secondo cono è un po ‘
più insidioso e questo deve farlo
javascript non è immutabile per natura così
javascript ti permette di cambiare
variabili quindi se per caso fanno
qualcosa nel tuo riduttore
cambia accidentalmente lo stato quindi il tuo
l’intera applicazione cadrà come un
castello di carte perché redux no
accetti di mutare lo stato così tu
Devo essere veramente disciplinato quando
scrivendo i tuoi riduttori per assicurarti che
non si manipola accidentalmente lo stato
per fortuna ci sono le librerie questo è
Sì immutabile anche su Facebook che
ti dà una collezione immutabile
biblioteca quindi in questo caso abbiamo questa mappa
ed elenca
rappresentano oggetti e cancella e
ogni volta che si esegue un’azione sulla mappa
orale o sulla lista si ottiene sempre un nuovo
copia e non modifichi mai l’esistente
oggetto in modo da poter usare sì immutabile a
attenuare un po ‘ questa debolezza ma
di nuovo usando questa libreria crei a
poco oltre e se necessario
comunicare con alcuni di terze parti
libreria che si aspetta oggetti normali
allora dovrai fare un po ‘di tubature
per dare quelle librerie di terze parti
oggetti normali invece di mappe immutabili
o belle liste così è stato riduttivo
che ci ha dato due buoni modi per mitigare
le due debolezze del componente
biblioteca e ora è tempo di dare un’occhiata
a programmazione reattiva e reattiva
programmazione che puoi usare per potenziare
i tuoi componenti evento asincrono
gestirlo è davvero potente per questo
quindi cos’è questa programmazione reattiva
cosa che definisce la programmazione reattiva è
spesso è più facile guardare ciò che chiamiamo
programmazione normale prima e nella
la comunità reattiva la chiamano passiva
programmazione e quale programmazione passiva
è che quando hai due componenti
un componente è responsabile di un altro
componente quindi in questo caso abbiamo una macchina
e abbiamo un motore e il motore
inizia ogni volta che si gira la chiave della macchina
in un certo senso, la componente del motore non lo è
nel controllo del proprio destino sempre
si blocca quando iniziare e nel codice
puoi vederlo così per la macchina
l’oggetto ha una proprietà del motore e
spara il motore ogni volta che la chiave è
girato così la programmazione reattiva in vs.
questa relazione così nel programma reattivo
il motore sa quando si accende e
la macchina non lo sa
manipola il motore e in questo caso
così fa il meccanismo di callback di Sophia
ogni volta che l’auto ha solo attivato l’evento
innescato il motore si accende e
questo mappa davvero bene al nostro componente
ai benefici dei componenti perché se
si scrive il componente reattivo tua
il componente ha il controllo proprio
destino e puoi davvero facilmente
capire come si reagisce solo componente
osservando la fonte del componente
perché ti dirà nella sua fonte
quando viene attivato manipolato o
fa qualche azione così i callback sono molto
scarso meccanismo sono relativamente
basso livello quindi ci sono le librerie
ci sono rxjs che zuppa questo
disco tutto quel meccanismo per renderlo più
potente
quindi rxjs proviene da una biblioteca di famiglie
chiamato X reattivo e quale X reattiva
è un po ‘ come una descrizione del protocollo
quindi è un grande è una grande descrizione di
tutti questi tipi di operazioni e
funzioni e metodi e poi cosa loro
è stato creato più
implementazioni in più differenti
lingue quindi c’è un RX c-sharp
c’è uno per m1 per JavaScript uno per
Scala uno per Java etc etc così solo da
imparare un insieme di operazioni e regole
puoi portare quella conoscenza a vari
altre lingue quindi quali sono i the
i principali concetti alla base del nostro SAS il primo
il concetto non è osservabile e cioè
qualcosa che puoi ascoltare che potrebbe
essere qualsiasi cosa
clic della tastiera Eventi del mouse Ajax
richieste che arrivano nell’invio di WebSockets
dati sopra la linea tutto ciò che puoi
ascolta puoi trasformarti in un
osservabile in rx a si al secondo
il concetto è quello delle operazioni e fino
raishin ti consente di manipolare il tuo
osservabili in modo da poter fondamentalmente eseguire
un’operazione inosservabile
e ottenere un nuovo osservabile in modo da
dimostrare come operare operazioni e
lavoro osservabile che ho creato questo
esempio pseudocodice e cosa vedi qui
su questa diapositiva è un osservabile chiamato a
che è una matrice di numeri di stringhe così
i numeri da 1 a 10 in forma di stringa quindi noi
può fare operazioni su quel flusso su quello
osservabile per esempio al numero e
cosa numerare quindi semplicemente prende il
stringa il numero e lo trasforma in un
numero intero
ma la parte reattiva è quella
ogni volta osservabile un cambiamento così per
esempio se aggiungiamo la stringa numero due
alla fine sarà osservato anche volontà
vengono aggiornati e ci arriveremo il numero due
aggiunto alla fine in modo che reagisca a
cambiamenti osservabili a così possiamo fare
più operazioni possiamo per esempio fare un
anche l’ operazione che filtra che il
impostato per includere solo
i numeri pari e di nuovo è reattivo
quindi se una modifica B verrà aggiornata se B
viene aggiornato C verrà aggiornato e noi
può fare una operazione finale chiamata
aggregato che conta il pari
numeri in questo caso, quindi quello che penso è
la bellezza della programmazione reattiva è
che puoi definire D lo sai
verrà aggiornato ogni volta che i suoi input
cambia tu non devi farlo
manualmente più te stesso
quindi è abbastanza potente per essere eseguito
giù completamente se siamo noi
stringa numero due in una B osservabile
otterremo il numero da aggiungere al
fine poi C otterrà anche il numero due
perché è un numero pari e quindi il
aggregato sarà 32 quindi è molto
roba forte così ora voglio spostare
dallo pseudo codice al reale reale
rx
e quello che voglio fare è che voglio prendere
un altro fa un altro caso di studio e questo
tempo guarda un esempio di completamento automatico così
tutti sanno senza il completo
si digita una query in una casella di ricerca
lo invia al back end e alla schiena
fine ti fornirà suggerimenti così
in questo caso cerchiamo americano e
ti darà alcuni spettacoli che iniziano
con American il completamento automatico è un
cosa sorprendentemente difficile da ottenere
completamente giusto quindi cosa voglio fare
prima voglio mostrarti ragazzi e
esempio imperfetto di un completamento automatico e
quindi voglio migliorarlo un po ‘alla volta
usando rxjs quindi ecco il codice il primo
cosa che dobbiamo fare è che dobbiamo ottenere un
riferimento a un elemento di input in questo
caso l’elemento di cui si può fare
la tua richiesta e poi facciamo qualche RSA
sì magia creiamo un osservabile per
ogni volta che l’elemento di input è una chiave
evento così ogni volta che l’utente inizia a digitare
in qualcosa che l’osservabile farà fuoco
e riceviamo eventi ma gli eventi che noi
ottenere sono eventi JavaScript che lo faranno
dirvi quale chiave è attiva se il
tasto shift è stato premuto e quale codice chiave
è stato inserito ma non siamo davvero
interessato a questo, quindi eseguiamo una mappa
operazione per ottenere il valore del bersaglio
qual è il contenuto effettivo del
elemento di input che attualmente abbiamo
quando l’evento è stato licenziato e poi lo facciamo
un’altra operazione mappa è che è
esattamente come la mappa es5
operazione che abbiamo su cancella esegue a
funziona su un input quindi in questo caso
quello che faremo è che lo faremo
prendi quella domanda e noi la daremo
a questa funzione di ricerca che fa un
richiesta di ajax al back-end e al
il back-end ci darà sperabilmente un po ‘
altri risultati di completamento e poi al
in basso vediamo questa funzione ISCRIVITI
e iscriviti puoi vedere come
il punto finale di un osservabile così
ogni volta che cambia qualcosa che siamo siamo
siamo abbonati
entriamo nel sottoscritto
operatore e l’ operatore di abbonamento ha
a funzioni come argomenti la funzione
la prima funzione è per ogni cosa
è andato bene per quando una cosa di successo
successo in questo caso quando il back-end
ci ha fornito altri risultati completati
e abbiamo anche un secondo fuoco
funziona l’errore che viene chiamato
ogni volta che si è verificato un errore per
esempio se il back-end non era disponibile
o non potrebbe fornirci risultati e
ogni volta che otteniamo un successo fuori a
completamento aggiorniamo l’interfaccia utente e ogni volta
le cose vanno male che abbiamo appena ignorarlo, perche
questo è quello che facciamo con gli errori e
iscriversi ‘ dovrebbe ricordarti delle promesse
quindi una promessa in JavaScript può essere solo
risolto una volta ma può essere osservabile
risolto molte volte così a volte in poi
nel web vedrai che chiamano
osservabili promette plus plus perché
hanno un po ‘di extra
funzionalità in cima alle promesse e
è anche molto facile in rxjs
per creare un osservabile da una promessa
ci sono funzioni per questo ma come me
detto questo esempio è imperfetto ci sono
un paio di cose che vanno male se tu
metti questo codice in produzione e il
la prima cosa è questo ragazzo così molto lento
si, quindi quello che vedi qui è che c’è
il tempo e alcune domande che noi
inviare al back-end, ma quello che voglio
Illustri è che ogni volta che digiti
una domanda in questo caso mi piace andare da noi
invia tutte le permutazioni di quella query a
il back – end quindi ciò che fondamentalmente abbiamo creato
è un modo molto conveniente per inviare spam
proprio server quindi in pratica ciò che vogliamo
facciamo è vogliamo dire solo inviare la query
al back- end se l’utente si è fermato
digitando per un po ‘questo è quello che noi
voglio fare così c’è un operatore per
che quell’operatore è chiamato debounce
e quello che vedi qui su questo schermo è
cos’è Rx e la famiglia di soluzioni reattive
di quadri chiamano così un diagramma di marmo
quello che un diagramma di meraviglia ti mostra è un è
un flusso di input l’operazione nel
in mezzo a questo caso rimbalzo
e ciò che il flusso risultante sarebbe
se quell’operazione è stata applicata così in questo
caso il flusso superiore ha uno due tre
quattro cinque e sei eventi s ma due tre
quattro e cinque sono davvero vicini
quindi, cosa farà il flusso risultante
filtrerà due tre e quattro
e ne manterrà solo cinque per poterli utilizzare
questo operatore per il nostro esempio da limitare
quantità di query che abbiamo inviato semplicemente
aggiungendo questo operatore di rimbalzo e poi
diciamo 500 che significa se l’utente si ferma
inattivo per mezzo secondo, quindi lo inviamo
al back- end e in questo modo impediamo
noi dallo spamming al nostro server, ma lo siamo
non c’è ancora ce n’è ancora un altro
La cosa è che se la tua query ha pochissimi
caratteri che spesso ottenere un sacco di
risultati che non sono veramente rilevanti
per quell’utente quindi in questo caso solo noi
ottenere buoni risultati se la nostra query è più grande
di tre caratteri e quindi cosa noi
voglio fare è se la query è inferiore a
che vogliamo solo ignorare quelli
domande e c’è un operatore per questo
anche questo è chiamato filtro e
cosa fa il filtro ci vuole un predicato
funzione e la funzione predicato è a
funzione che deve tornare a un falso
basato su un input e in questo caso
sarà se la X è più grande di 10 lo farà
lasciarli entrare così è per questo che puoi vedere
che i numeri che sono inferiori a 10
sono semplicemente ignorati, quindi possiamo usarli
il nostro esempio semplicemente chiamando il filtro
prima di fare il debounce
e prendiamo la domanda che abbiamo appena detto
consentitele solo se la lunghezza della query
è più grande di 3 quindi ora abbiamo risolto
quel problema, ma ovviamente non siamo fuori
dei boschi, ma c’è un altro problema
ancora e questo è quello che a volte mandiamo
la stessa domanda due volte di fila e questo
può succedere se l’utente preme l’invio
chiave, quindi quello che vediamo ora è che c’era
una finestra di cinque secondi tra il primo
andare a e il secondo andare a query e noi
tutti sanno che probabilmente non ne abbiamo di nuovi
risultati entro una finestra di cinque secondi così
quello che vogliamo fare è che vogliamo solo il
domanda
se la query è effettivamente cambiata da
prima e c’è un operatore per questo
anche questo è chiamato distinto
fino a quando non viene cambiato e quello che fa è esso
consentirà solo un evento se lo è
diverso da quello precedente e questo
è qualcosa che non abbiamo mai visto prima
quello che vediamo qui è un operatore che
ha uno stato interno questo operatore
tiene traccia della voce precedente che
è stato fatto in modo da poter avere operatori
che hanno stato così è carino
potente e come puoi vedere nel
flusso risultante abbiamo solo
valori alternati quindi applichiamo questo
operatore questa cosa non lo faranno
cambiato e ora inviamo solo query if
la query è effettivamente cambiata così ora noi
abbiamo quasi finito di averne uno
grosso problema ancora da risolvere e
questo problema è piuttosto ambiguo e
questo è questo così qui vediamo un tempo
linea e vediamo due query così l’utente
cercare per andare rapidamente a Rotterdam
capito che il go-to non è in
rotterdam ma ad amsterdam quindi abbiamo cambiato
questa domanda per andare ad Amsterdam ma ora noi
avere due richieste asincrone in
aria allo stesso tempo e se il tuo server
sta avendo un giorno di riposo
il risultato per andare ad Amsterdam potrebbe essere
potrebbe essere risolto prima prima del
risultati di andare a rotterdam quindi cosa voi
vedere è qualcosa di molto strano sei tu e
nella tua casella di domanda che vedi vai
Amsterdam per cosa vedi i risultati
andare a Rotterdam e il completamento automatico
che è molto strano e non qualcosa
che vogliamo avere quindi quello che vogliamo
facciamo è vogliamo esprimere l’idea di
solo usando i risultati dell’ultimo Ajax
richiesta che è stata inviata al backend così
come probabilmente hai indovinato, ora c’è
un operatore per questo è molto strano
nome si chiama mappa piatta ultima no
chiedimi perché ma fa esattamente quello che io
appena descritto quindi se ne hai più
richieste asincrone che utilizzerà solo
i risultati dell’ultima richiesta che era
fatto in modo che il bug che abbiamo appena visto è no
più un problema
quindi questo è l’esempio completo e come
potresti notare che è relativamente piccolo
ha poche righe di codici, ma lo fa
un sacco di lavoro e questo è il potere di
rxjs utilizzando queste operazioni standard
e la loro combinazione in modi intelligenti voi
ottenere un meccanismo veramente potente e se
Sono assolutamente onesto se dovessi scrivere
questo senza rxjs in puro JavaScript mio
il codice avrebbe probabilmente 500 linee Wow e
ci saranno probabilmente molti bug in
in quel codice così da stare in piedi
le spalle dei giganti in questo caso Raj
sì, puoi sfruttarli per realizzare
grandi cose in relativamente poche righe di
codice ma ce ne sono anche altri
benefici di rxjs e il primo vantaggio
è che il produttore e il consumatore
sono disaccoppiati quindi cosa intendo con quello
che il produttore in questo caso era il
evento chiave che ha sparato l’iniziale
evento e il consumatore doveva iscriversi
e fino a quando l’ abbonamento ha ottenuto il suo
serie di completamenti automatici è stato felice
quindi non importava quante operazioni noi
messo tra lì non abbiamo dovuto
cambiare il consumatore o il produttore noi
non ha dovuto cambiare quel codice così
questo è molto potente e ovviamente il
altro vantaggio che ho già spiegato
un po ‘ è che le operazioni sono a
blocco molto molto potente così tu
può combinarli in più interessanti
modi
di nuovo come blocchi di Lego e puoi ottenere
risultati davvero potenti ma non ci sono
davvero grande svantaggio di rzs e cioè
che ha un apprendimento molto molto ripido
curva e non mi piace chiamarla a
la curva di apprendimento mi piace chiamarla a
apprendimento scogliera perché questo nero
questa è una specie della mia esperienza con Rzs
ed è perché devi davvero
lasciar andare il vostro modello di importanza fondamentale perché
eri così abituato a manipolare sempre
variabili e non pensare nei flussi
che ci vuole un po ‘di tempo prima
che clicca nella tua testa ma una volta
è molto gratificante perché vedi
un sacco di problemi che vorresti
prevede la soluzione con imperativo
programmazione che puoi ora
con osservabili in un detergente più pulito
modo quindi vale sicuramente la pena guardare
e come hai visto dal completamento automatico
esempio è davvero molto potente
il secondo pettine è che il
la documentazione è molto concettuale
e quello che intendo è quello
a volte la documentazione si legge come
il progetto di tesi di qualcuno è fatto
davvero molto sì sì un abstract così dentro
questo caso restituisce una sequenza osservabile
che contiene solo continui distinti
elementi in base al selettore di chiave
e confronta quindi qual è il selettore di chiave
qual è il confronto di elementi continui
così qualcuno ha la più pallida idea di ciò
operatore è la descrizione per questo
operare sì esattamente
questo è il singolo fino a quando è cambiato
a volte quando io quando ci provo
programma in rx a si e ho incontrato
questa documentazione sono come oh questo è
non quello di cui ho bisogno e poi più tardi
trovare qualcosa su Stack Overflow poi
risulta Ho il diritto uno tutti insieme
ma questa documentazione non aiuta il
la documentazione è anche molto ti mostra
esempi non pratici quindi lo faremo
essere sempre come un array da 1 a 10 e
quindi applica l’ operazione in tal modo
non è sempre pratico quindi cosa desidero
che avrebbero fatto è che lo farebbero
utilizzare più esempi pratici in
documentazione così reattiva
programmare un bel strumento per potenziare
i tuoi eventi asincroni e questo porta
io ora siamo quasi alla fine del
presentazione ma è consuetudine per a
presentatore per darti alcuni ragazzi
raccomandazioni su come usare questi
tecnologie e la mia prima raccomandazione
potrebbe essere un po ‘controintuitivo, ma io
non consigliare l’uso di Redux o rsjs
se la tua app è veramente piccola
perché aggiungi un sacco di spese generali e
questo potrebbe non valerne la pena così per il
domanda da fare per il contatore
applicazione che utilizza i nostri SaaS o Redux è
davvero davvero eccessivo, ma se il tuo
l’applicazione inizia a sentirsi troppo grande e io
so che questo è un po ‘sdolcinato
sentimento ma sai quando arrivi
lì così all’improvviso avrai questo
applicazione e all’improvviso
non si adatta alla tua testa
non so dove dovrebbe essere lo stato
i nuovi membri del team non capiscono dove
la nostra cosa va allora potrebbe essere un bene
tempo di iniziare a usare Redux come ho detto
ha una piccola curva di apprendimento ma è così
abbastanza piccolo da permetterti di salire a bordo
membri del team
relativamente velocemente, ecco il mio secondo
raccomandazione se inizia a sentirsi troppo
grande basta usare Redux è un bel modo per
conserva il tuo stato la mia terza raccomandazione
è così quando hai eventi
richiede un sacco di coordinamento come noi
visto sull’esempio completo esterno tu
voglio fare alcune cose di livello superiore con
eventi asincroni che vuoi
sovralimentare un componente allora potrebbe essere
tempo di ingoiare la pillola rossa e iniziare
usando rxjs ma come ho detto ha molto
curva di apprendimento ripida quindi aspettatevi un po ‘
problemi di onboarding con i più recenti
sviluppatori perché devi prenderne un po ‘
il tempo per spiegare come funziona e come
usa rx a si quindi ti ho appena dato come a
50 minuti ogni presentazione sulla riduzione
programmazione reattiva e io a malapena
scalfito la superficie in modo da è che non è
abbastanza da sapere redux o RCS quindi cosa io
voglio fare è voglio scrivere una serie
di post sul blog per arricchire questi
gli argomenti un po ‘di più ti offrono ragazzi
con alcuni video con post sul blog da mostrare
voi ragazzi come imparare con condotti e
reagire per risolvere la cosa divertente di entrambi
Redux e fix reattivo sono tutti nostri
video disponibili il creatore di Redux ha
il suo corso su un kadai oh è gratis
puoi seguirlo e lo spiegherai
come costruire Redux e come usare Redux
quindi è molto bello quindi le persone sono io
non farti prendere dal panico per 42.000 elfi o per quello
serie e inizierò a inviarli
settimanale a partire da giovedì quindi è così
quasi abbiamo anche una posizione
al piano di sotto dove puoi giocare a fallout
Minigioco di base per l’hacking di terminali che puoi
vincere un grande premio una grande anatra di gomma e
Sono anche lì allo stand quindi se tu
voglio parlarmi di redux o rxjs
o programmazione reattiva vieni a trovarmi
quindi non dimenticarti di votare
la sessione e qualsiasi altra sessione quella
sei presente grazie
sì sì quindi c’è una domanda se il
lo stato diventa davvero davvero grande cosa
non le prestazioni che fare con Redux bene
naturalmente si degraderà perché tu
non posso tenere infinitamente un numero di
cose in memoria ma se usi
impaginazione o si inserisce solo nel negozio
ciò di cui hai bisogno al momento puoi farlo
attenuare che è regolare
JavaScript quindi non puoi continuare a inserire
memoria e ovviamente perderà un
un po ‘ di prestazioni va bene la memoria
perdite in redux non penso che sia quello
qualcosa che si può facilmente farlo perché
la riduzione dice che c’è un negozio di riduzione
per applicazione quindi non è così
incline a perdere perché c’è solo
un negozio e quel negozio avrà solo bisogno
da rimuovere quando l’utente chiude la sua
scheda così in questo modo le perdite di memoria non lo sono
che gran parte di un problema in redux
perché c’è solo un negozio e basta
si pulirà quando chiudi il
scheda quindi sì così così per darti ragazzi a
un po ‘di background così
model-view-controller contro il
architettura dei componenti quindi non l’ho nemmeno fatto
T l’architettura del componente
Sono stato davvero colpito in faccia così
siamo arrabbiati siamo un negozio angolare
42 angolari 1.0 e angolari 2.0 essi
andato a questa nuova architettura così ma il
la cosa è che la tendenza è andata
per un po ‘reagì così tanto
il primo ad abbracciare il componente
architettura un angolare seguito vestito
e il polimero è arrivato così tanto
le strutture si stanno muovendo verso componenti
quindi penso che se si aggiorna a
angolare 2 quasi non hai un
scelta andrai al componente
architettura ma la differenza tra
un componente e un controller di visualizzazione mobile
è solo che la componente interna è
fondamentalmente la combinazione di una vista e
un controller in una sola cosa ma
che la differenza è che è così
non prova a prenderli separatamente così
un controller di visualizzazione mobile spesso è a
molti parlano di
avere più controller per lo stesso
visualizzare e avere più viste per il
stesso controller e lo sappiamo tutti
questo non è segretamente vero che non ho mai
scritto un controller per più viste
o aggiungi la vista per un singolo
controller in modo davvero i componenti sono
fondamentalmente un modo per dire che riconosciamo
il fatto che siano sposati a ciascuno
altri quindi non fingiamo più quello
ci sono due entità separate , quindi è così
non troppo di un tratto per migrare e
nell’angolare 2 sono presenti le guide di aggiornamento
come fare
Please follow and like us: