Press "Enter" to skip to content

Dependency Injection without classes – Fun Fun Function


buon lunedì mattina oggi stiamo andando
per vedere come si può fare la dipendenza
iniezione senza classi utilizzando solo
funzioni Io sono il tuo host npj e tu sei
guardare la funzione di divertimento
[Musica]
[Musica]
va bene così lo spettatore che io sono un
la visione di questo episodio è qualcuno
che proviene da un breve Java o C.
sfondo e sei abituato a fare
cose in un certo modo e tu sei
chiedendo se quei modi sono applicabili
su JavaScript e, in caso contrario, su come eseguirli
in un modo più JavaScript di sì sì
esso
e potrebbe anche essere che tu sia giusto
cadendo su questo video e tu sei
chiedendosi quale iniezione di dipendenza anche
è e se questo è il caso è possibile controllare
questo video che ho realizzato su
soggetto di iniezione di dipendenza che puoi
trova anche quell’episodio nell’episodio
quello collegato a quell’episodio nel
le parole di descrizione dell’episodio sono difficili oggi
sembra come funziona
Diamo prima un’occhiata a un oggetto orientato
esempio di dipendenza, la via d’uscita
si sarebbe probabilmente fai f eri nuovo
in JavaScript e ti stai buttando dentro
questo e tu vieni da un c-sharp
sfondo immaginiamo di essere
codificare un gestore utenti è una cosa che
per ora è responsabile per l’aggiunta di utenti
al database ora sto andando al codice
questo usando le mie mani
[Musica]
[Applausi]
[Musica]
si l’ho fatto
lascia che ti guidi attraverso questo
devo solo iniziare ora, quindi dì dai
Acceso Acceso lì lì raffreddare
quindi prima riga qui questo è solo un
database fittizio il database UNICOR
che ho inventato sul posto sì così
app è questa è solo la nostra applicazione principale
non stiamo andando a passare attraverso quel
perché non esiste l’ho inventato
pure e abbiamo questo utente manager noi
stanno per essere codificati questo no
esistono ancora in questo posto ma voglio
per mostrarti prima come lo usiamo, iniziamo
qui istanziando un nuovo database
collegamento qui noi lo passiamo un ospite e
una porta di alcune configurazioni di base
opzioni e otteniamo un oggetto di connessione
ritorno dall’istanziazione di questa classe e
questo è un po ‘di API che siamo
ottenendo dal fornitore di database che abbiamo
nessun controllo su questo o su qualcosa di noi
non lo farei nemmeno se fosse reale
quaggiù sulla linea 10 siamo
creare un’istanza
il nostro manager utente e ci sono di passaggio che
l’ oggetto di connessione che vedi vedi qui
questo mi dispiace questa cosa siamo noi siamo
passandolo qui e otteniamo ovviamente
un oggetto gestore musicale è il nostro nome utente
la tua istanza della classe User Manager
ecco finalmente qui sulla linea 12 siamo
passando nel gestore degli utenti che noi
creato qui e stiamo passando in
il costruttore dell’app è il nostro principale
pezzo di codice che dipende dal
user manager ne ha bisogno per fare cose e
poi se ne va e lo inizia o
qualcosa non è terribilmente importante
è solo per darti un po ‘di contesto
è importante ciò che fa il gestore degli utenti
quindi passiamo a scrivere utente
direttore del braccio creiamo che l’uso di file
adesso
okay, lo chiamerò signore
manager dr. Sì
oh questo è implementato
[Applausi]
[Musica]
sì, ho scritto un codice, camminiamo
attraverso di esso è una classe di user manager tutto
abbiamo bisogno di esportarlo pure
esporta altrimenti user manager predefinito
che non può arrivare ad essa dall’esterno e
quindi il file non ha molto scopo
nel mondo comunque ci vuole un ha
costruttore che accetta un database
connessione ricorda dall’ultimo codice
lascia che te lo mostri qui l’utente
manager accetta un oggetto di connessione
torniamo è quello che ottiene qui
e lo assegnerà a un privato
proprietà privata variabile privata che
chiamiamo connessione underscore e usiamo
è qui ma non l’ho digitato
creare correttamente qui l’utente accetta a
nome e poi chiamerà la tabella su
utenti e presumibilmente ottenere una sorta di
oggetto comando oggetto di qualche sorta indietro
da quello che chiamiamo insert on with
alcune opzioni le ho fatte tutte sue
i bisogni sono nuovi qui per alcuni empi
ragione e poi passiamo il nome
proprietà per la proprietà nome completo in
lì per l’argomento inserto e Edward
sembra tornare una promessa qui e quando
quando la promessa si risolve, otteniamo un
utente e estraiamo l’ID utente da quello
quello che farà il grande utente sarà
creare un utente in cui il nome che noi
passarlo e poi creerà il ritorno a
prometti che alla fine si risolverà nel
ID di quell’utente che è ciò che questo
la piccola applicazione fittizia ora fa
riscriviamo questo in modo funzionale
Ho intenzione di tornare al principale il
iniziando l’applicazione il principale di init
cosa prima e cosa ho intenzione di fare
ecco quello invece di chiamare questo
gestore degli utenti sono
andando a chiamarlo utente utils e noi siamo
andando a chiamarlo dai programmi utente utente perché
non è davvero un oggetto manager
sarà un insieme di funzioni e
questo non sarà più
un’istanza di come questo sta per essere
mm-hmm sai un modo in cui non siamo pari
andando ad avere un contenibile
abbiamo solo intenzione di avere un
creare funzioni utente e che sta per
essere AHA fare creare utente e questo è
andando a prendere la connessione di come
quello e renderà il riduttore sarà
qualcosa che esportiamo dall’utente
utils
chiedo scusa per quella gustosa pasta fatta
creare utente e quindi creare utente
sta per essere qualcosa che si passa in
l’app perché l’app dipende
per creare un utente va bene così stiamo andando
per codificare questa cosa che l’utente utilizza in seguito
ma prima di farlo vorrei passare un
un po ‘di tempo per mostrare un po’ di amore
voi i clienti che il vostro astuto potrebbe
ho notato che non c’erano pubblicità
correndo prima di questo video e questo è
perché il tuo patrocinio è finanziario
il supporto mi ha permesso di spegnerli
non più fastidiosi pre-roll se ne sono andati
ora non ho più bisogno di preoccuparmi
rendere felici gli inserzionisti o mantenere il
la vista conta fino ho solo bisogno di cura
di cosa pensate voi patroni
registrando questo ci sono 1465 di voi ma
ci sono 13 di voi che sono stati molto
generoso e selezionato il
spreco di carta incredibilmente stupido
livello di celebrazione o uno superiore e io
vorrei festeggiare ora
[Musica]
Non so grazie mille
i vecchi mecenati ti ringraziano tanto per il tuo
supporto che davvero non dovevi fare
ma tu l’hai fatto e questo ti rende
incredibile il tuo supporto consente a tutti di farlo
Divertiti divertendoti in modo funzionale senza
annunci e mi permette anche di versare di più
soldi e più tempo in divertimento divertente
funzione e portalo al livello successivo
grazie mille per essere un patrono tutto
tornando al codice dove siamo okay
stavamo creando questo utente util e
facciamolo, tu sai cosa sto andando
per afferrare il gestore di copia utente gestore che
e tienilo qui ma commentato così
che puoi ottenere un riferimento confrontalo
va bene
[Musica]
BAM okay , diamo un’occhiata a cosa
questo perché questo è per alcuni di
questo sta per essere assolutamente
niente di strano e per alcuni di voi quello
sono probabilmente nuovi per JavaScript questo è
sarà super strano quello che è
sta succedendo qui
quindi cosa fare creare utente fa così
crea la funzione di creazione dell’utente per noi
è un è una piccola fabbrica che crea
la funzione crea utente come un po ‘di
importa ma lascia che ti accompagni saltiamo
torna all’esempio e dai un’occhiata
cosa fa così qui li chiamiamo a
crea utente e passiamo in connessione
e questo ci darà la possibilità di creare utenti
quando creiamo l’utente quando noi quando
l’app in realtà lo usa dentro
si chiamerà solo creare un punto utente
o
quel nome come Mark Smith è il modo
verrà utilizzato in modo che possa creare utenti
è una cosa che crea creare un utente
funziona non è nemmeno una cosa perché io sono
non dire una cosa è una funzione
crea altre funzioni che si chiama a
funzione di ordine superiore e puoi chiamare
come se avessi un episodio su questo e il
serie di programmazione funzionale lunga che
è lo seguono e si può controllare lo
fuori cliccando qui puoi anche trovare
nella descrizione dell’episodio
sono le funzioni di ordine superiore che sono
fantastico in entrambi i casi torniamo indietro
in utente utente utilizza e vedere ciò che noi
ci sono
così ancora una volta può creare un utente che prende un
connessione e poi restituisce questo
funzione crea questa funzione e
questa funzione prende il nome che è
unica variabile unico argomento e poi
usa quello dentro di sé e
sai cosa ho fatto una copia incolla qui
questo è questo è stupido
nel codice precedente a cui fare riferimento
la connessione alla proprietà privata
la classe ma non abbiamo alcuna classe
qui abbiamo una connessione qui come un
argomento e abbiamo effettivamente accesso a
che così la connessione lì e poi esso
fa esattamente la stessa cosa di prima
e prima perché questa è una freccia
funzione e non usiamo parentesi graffe
qui e noi possiamo farlo quando è
solo uno quando e la funzione della freccia è
ha solo una riga quindi il ritorno
dichiarazione non abbiamo bisogno che a causa
cioè che è implicito quando lasciamo
fuori le parentesi graffe in modo che potessimo
anche come questo turno, ma non lo facciamo
farlo in qui perché siamo in grado di salvare la
e con cosa stai osservando qui
dove accediamo alla connessione, questo è il
potere di chiusure in JavaScript se tu
Ho bisogno di chiusure Ho un video su questo
qui e dovresti guardarlo ma a
Il primer veloce è che sono così carini
Farò un po ‘di indentazione qui
per renderlo forse un po ‘di più
ovvio quindi questa prima funzione qui il
funzione di fabbrica esterna o qualunque cosa tu
vorrebbe chiamarlo lo creerà
una nuova chiusura in modo che il codice qui dentro se se
avevamo usato parentesi graffe qui e così
è stato non c’era spazio per più di più
Funziona così più codice intendo qualsiasi cosa
qui sarebbe avrebbero accesso al
parametro di connessione di connessione di
Ovviamente, perché è un a è
funzione e, naturalmente, la funzione ha
l’accesso ad esso è i suoi argomenti
ma la cosa fantastica delle chiusure
è questo quando dichiariamo un’altra funzione
all’interno di una funzione come la connessione
qui abbiamo accesso a quello il
argot e qualunque cosa sia
la funzione ha accesso a questo codice qui
questo codice qui hanno anche accesso alla
molto stesse variabili e argomenti tali
come l’argomento dal dal
funzione esterna quindi questo è ciò che ci consente
fare cose come questa fuori dalle chiusure
sono davvero davvero potenti lasciatemi
tornare al livello di annotazione precedente
e questa tecnica che stiamo usando qui
dove stiamo creando una funzione che esso
è una specie di prefilled dove il
connessione perché sai che potremmo
l’ho appena fatto, ma poi
sarebbe stato ingombrante da passare
in giro perché poi dovremmo
passare attorno a entrambi può creare utente e
avere un riferimento alla connessione
in qualche modo questo ci permette di
pre-riempire l’ utente di creare con il
connessione come mi permetta di tornare a
il codice principale, quindi quello che facciamo qui è quello
stiamo creando una funzione che ha noi
avere una specie di pre-riempito per piacere
caricato con la connessione quindi è a
creare un utente legato per sempre a questo
questa connessione qui e questo significa che
app quando ottiene un grande utente che può
basta chiamare creare utente non è necessario
sapere qualcosa su come il
accesso al database perché
che è astratto all’interno di creare
utente è un ottimo modo fantastico
esempio di inversione di dipendenza che ho a
video anche su questo, ma in realtà
in quel video lo chiamo inversione di
controllo che non è esattamente la stessa cosa
cosa ho capito male sottigliezze ma
quello che ho descritto è la dipendenza
inversione e il concetto è lo stesso io
solo sbagliare le etichette, ma in entrambi i casi
Sto divagando guardiamo indietro a questa cosa
qui questa tecnica qui il prefilling
della connessione del nome ha a
c’è un nome per questo e si chiama
Coreano, ho un episodio su questo come
bene lassù o nell’episodio
Descrizione indietro quando ho fatto che
episodio che non ho capito completamente
il bisogno per la Corea tanto quanto lo faccio ora
e penso che questo in realtà
illustra il caso era meglio di
quell’episodio ha fatto ma perché dovresti farlo
questo perché ti fai correre invece di
classi per fare dipendenza
iniezione perché perché qualcuno dovrebbe preferire
questo oltre le classi ce ne sono diversi
ragioni ma in questo caso penso che il
argomento più forte è solo il
le funzioni del minimalismo sono qualcosa che
già usiamo nelle chiusure di lingua
è qualcosa che già usiamo nel
lingua sempre e in questo caso
possiamo solo andare via con non usare
classi noi non possiamo solo aggiungere che a
la cassetta degli attrezzi che è la nostra applicazione è
anche una cosa in meno direi
la soluzione attuale è più semplice è
è semplicemente molto meno codice è un
un po ‘più elegante della classe
solo un costrutto più grande anche se siamo pari
se così come so che le lezioni stanno andando
ottenere funzioni di freccia in modo che potremmo fare
qualcosa di simile e tu lo sai
rende il confronto un po ‘più giusto ma
come vedi c’è ancora un po ‘di a
un po ‘di sintassi aggiuntiva in questo caso e
le classi hanno anche la complessità extra
quello che implica questo è una freccia
le funzioni lo rendono un po ‘più bello
ma c’è ancora un po ‘ di
la confusione intorno a ciò che l’inferno questo
si riferisce a JavaScript che non è
chirurgia a razzo ma è un aggiunto
complicazione quando lo paragoni a questo
caso in cui è semplicemente incredibilmente ovvio
che cosa si riferisce al collegamento e cosa
si riferirà a tutte le situazioni

nessun modo di cambiare cambiando questo mentre
in questo caso se questa non fosse una freccia
Funziona questo potrebbe essere come il cambiamento
a seconda di quale contesto è stato chiamato
le classi fanno in alcuni casi
prestazioni, ma quelle sono così
minuscolo che sono solo in gioco se
stai creando centinaia di migliaia
di oggetti al secondo in questo caso noi
sono realisticamente solo con pochi utenti
manager come al massimo così sta per
fare assolutamente zero impatto sul nostro
anche l’ applicazione è semplicemente bellissima
guardare quanto è buono appare
ah ma potresti chiederti cosa succede
una volta che iniziamo ad aggiungere altri metodi al
classe quale sarebbe l’equivalente lì
come diciamo che avevamo un utente eliminato
o o qualcosa del genere che cosa sarebbe
capita allora ne parlerò
nel prossimo episodio
ah cliffhanger hai appena visto un
episodio di fun fun function che rilascio
nuovi episodi ogni lunedì mattina Oh 800
GMT se stai guardando dal futuro
puoi controllare il video della prossima settimana qui
altrimenti devi aspettare fino a lunedì
e nel frattempo si potrebbe desiderare di
guarda il mio video di patreon che parla
sul perché potresti voler diventare un
patrono
Sono mpj fino al prossimo lunedì mattina
sessualmente
Please follow and like us: