Press "Enter" to skip to content

GOTO 2016 • Visual Studio Code: Shipping One of the Largest Microsoft JavaScript Apps • Alex Dima


ciao a tutti, grazie per esservi uniti a me
oggi mi chiamo Alex Dima, sono un anziano
ingegnere del software in Visual Studio
team di codice Microsoft stiamo lavorando
fuori da Surak e oggi mi piacerebbe
dirvi un po ‘ su alcuni dei
lezioni che abbiamo imparato durante lo sviluppo
e spedizione del codice di Visual Studio e I
proverò a dare qualche idea su cosa
abbiamo fatto quello che abbiamo imparato
e spero che questo ti possa aiutare
in quello che stai facendo , sì, prima tu
un promemoria per valutare il discorso così questo è
fondamentalmente solo il tuo codice mi dispiace se
Si può già vedere è che questo è bene
cosa spediamo ogni mese e spero che tu
sapere in realtà parecchio da questo
I discorsi di Eric in precedenza siamo noi
spediamo effettivamente a cose diverse così noi
spedisci affari con il tuo codice che è
più o meno una web app quindi è un it’s
un’app costruita con Java Script costruito
utilizzando API node.js e costruito in cima ad una
API del browser e vengono tutti in
forma di elettrone-elettrone fondamentalmente
consistente in una fusione tra cromo
e node.js ma allo stesso tempo spediamo
una biblioteca che chiamiamo Monaco
editor che contiene più o meno il
cosa in rosso laggiù lo prendiamo
cosa fuori dal nostro prodotto e lo spediamo
separatamente come libreria JavaScript
può essere eseguito in qualsiasi browser Web moderno, quindi se
hai un’app in cui stai mostrando
codice che puoi effettivamente anche oggi andare avanti
NPM e recuperare il nodo dell’editor Monaco
modulo sto ancora lavorando al
documentazione quindi è ancora un lavoro dentro
progresso ma sì , questo è quello che facciamo
oggi ma non abbiamo iniziato a farlo e
in realtà abbiamo iniziato da un bel numero
di anni effettivamente invia l’autunno di
2000
e indietro al tempo come Eric ha menzionato
ci è stata data la missione di ridefinire
e creare esperienza di sviluppo o
strumenti di sviluppo che funzionano nel
browser così al momento in cui effettivamente
sono iniziati in JavaScript i nostri modelli erano
consistendo più o meno nel provare a
creare classi dove in JavaScript tu
userebbe l’ereditarietà prototipica e
così via , vorremmo dire letteralmente la funzione
la mia classe il mio prototipo di punto dot dot foo
equivale a qualcosa quindi andrebbe tutto bene
JavaScript idiomatico da provare a creare
una sorta di classi e modelli e
tipi nel nostro codice sorgente una cosa noi
ho capito fin dall’inizio che noi
saltato dritto sulle promesse come un modo per
astrarre via una sincronicità proprio così
ogni volta che costruiamo qualcosa nell’interfaccia utente
ogni volta che dovevamo calcolare qualcosa così
per esempio muovi il mouse su a
pezzo di testo e dobbiamo mostrarti a
passa così ogni volta che facciamo ciò che costruiamo
il codice UI in modo tale che nel
terminare il codice UI effettua una chiamata e questo
la chiamata restituisce una promessa con quella effettiva
cosa da mostrare quindi questo è stato davvero un grande
vincere per noi perché ogni volta che abbiamo cambiato
architetture ogni volta che ci allontaniamo
da eseguire solo nel browser per
correndo in questo ambiente elettrone noi
potrebbe semplicemente sostituire l’implementazione
dei provider hover e invece di
eseguendoli in un web worker tutto a
all’improvviso potremmo appena generare un processo e
farlo in un processo separato e abbiamo avuto
letteralmente zero modifiche al nostro codice UI così
Mi è stato effettivamente fin dall’inizio Sono un
Sono un programmatore JavaScript hardcore quindi
Adoro JavaScript e chiunque altro
progetto che inizio avvio immediatamente
JavaScript ma allo stesso tempo eravamo
a partire da Microsoft, ma quello che è diventato
essere il compilatore dattiloscritto questo piccolo
squadra hanno anche iniziato qualcosa loro
chiamalo nel momento in cui l’ hanno chiamato
Strada ed era ancora un esperimento come
lontano
erano preoccupati e lo erano anche loro
cerca i primi ad adottare la loro
compilatore ero un grande scettico quindi davvero
Cerco di starne lontano per tanto tempo
come ho potuto, ma poi ad un certo punto ho
effettivamente capito la loro promessa che
è quello di dare fondamentalmente te
strumenti necessari per essere in grado di scrivere
e mantenere una grande applicazione che a
la fine della giornata viene eseguita
JavaScript JavaScript per quanto mi riguarda
preoccupato e voi ragazzi lo conoscete pure
in realtà soddisfa la promessa fatta da
Java se ti piacerebbe davvero scrivere
il tuo codice una volta e funziona davvero
ogni dove però se continui
aggiungere persone a una squadra o se il tuo codice
sta crescendo e crescendo e tu hai
più pezzi che devi cucire
insieme a un certo punto sarai un
un po ‘paura di fare cambiamenti così io
personalmente ha scritto un sacco e un sacco di
prova per coprire il mio codice ma poi ogni
ogni tanto avrei bisogno di
cambia qualcosa in qualcun altro
Ho solo bisogno che siano loro stanno chiamando
in un modo strano , lascia che lo aggiusti a
un po ‘ e ogni volta che lo farei
questo mi farebbe diventare un po ‘nervoso
perché non ero mai veramente fiducioso
che i cambiamenti che faccio davvero lo faranno
lavoro alla fine, quindi questo è uno
delle cose che il dattiloscritto cerca
aiuto con il quale sta effettivamente provando
per darti un ulteriore livello di sicurezza
più specificamente ti protegge
contro il tuo stupido, quindi come dovrei
dì questo
è più simile a una rete di sicurezza che vedo
come una rete di sicurezza e come una serie di strumenti
questo mi permette di essere più produttivo
dattiloscritto a differenza di molte altre lingue
non è compilato alla fine
JavaScript ma è un superset di
JavaScript quindi cosa vuol dire questo
significa che qualsiasi JavaScript puoi scrivere
è in realtà anche dattiloscritto
dattiloscritto aggiunge solo alcuni optional
costrutti sintattici come il tipo
annotazioni e interfacce e in generale
fa l’ autore
codice javascript più piacevole di tutti
queste cose per la maggior parte vengono solo con
benefici in quanto ti permettono di avere ricchi
tooling in fase di compilazione
e tutto il dattiloscritto alla fine del
giorno compila fino a JavaScript quindi a
runtime ci sono costi zero associati
con con lavorare con scrivere il tuo codice
a dattiloscritto va bene così vorrei presentarvi
un po ‘ come funziona il dattiloscritto e io
spero che tu possa vedere il mio schermo così qui
lo lanceremo semplicemente al tuo codice
una semplice cartella che contiene solo a
singolo file spero che tu possa leggerlo e
questo semplicemente contiene un metodo che
ordina un array e per ogni membro di
la matrice fa un confronto su questo
nome della matrice ora come ho detto qualsiasi JavaScript
è un dattiloscritto, quindi se vado avanti
e rinomina questo Dodgers 2 punti es
la cosa nell’angolo qui che racconta
me che questo ora non è dattiloscritto
davvero è cambiato bene perché questo è
tutto ciò che è dattiloscritto valido si vede in
questo punto che se solo tieni solo
il sottoinsieme degli script Java di
linguaggio dattiloscritto che non si ottiene veramente
molto fuori proprio così è dattiloscritto
bene e sanno che c’è un metodo
ordinare per nome e sanno che ci vuole
una discussione ma non hanno idea di cosa
questo metodo dovrebbe prendere e cosa
questo metodo dovrebbe tornare così io
posso solo passare in cinque e ci sarà
felice con esso ora il vero valore di
dattiloscritto arriva una volta che si digita due
una volta che si inizia un po ‘troppo per
decora il tuo codice con un po ‘ di
spiegazioni che potrebbero anche aiutarti
in futuro quindi, per esempio, ho qui
snippet che in realtà questo tipo per nome
la funzione dovrebbe prendere una serie di
persona giusta quindi mi basta aggiungere sopra
qui e all’improvviso non solo io
comunicalo a me stesso in futuro
o i miei compagni di squadra che questa funzione
dovrebbe essere chiamato con una serie di
persone ma all’improvviso vedi
dattiloscritto acceso
e sta già iniziando a mostrarci
alcuni problemi con il nostro codice giusto quale
altrimenti per quanto ci riguardava
sembrava perfettamente ragionevole e lo sarebbe
solo fallire in fase di esecuzione ora che cosa è
interessante di questo è che non lo fai
devono inquinare il codice e destra al
ogni luogo il tipo di tuo
delle tue variabili, per esempio
il risultato è nel timore di essere una schiera di persone
non c’è bisogno di dire che ancora una volta la nostra
il risultato è un array di persone o fondamentalmente
qui xey quando si chiama sort loro
già sappiamo che xey dovrebbero essere a
persona in modo da non dover fare nulla
neanche lì
così all’improvviso ottieni tutto questo
ricca digitando solo più o meno
spiegando che cosa gli argomenti passati in
ancora meglio sanno già qual è il tuo
funzione restituisce a cui viene data una persona
matrice restituisce una matrice persona ora questo
è fondamentalmente la custodia di sicurezza
stupido come si sarebbe solo eseguire il
compilatore e ha errori così faresti
non spedire il tuo codice ma il vero potere di
dattiloscritto arriva quando vuoi
funziona bene così quando tu quando vuoi
basta digitare ora sanno già che X
ha un membro chiamato name e name is a
stringa in modo che io possa fare il confronto locale e io
puoi confrontarlo con il nome del punto Y quindi se tu
fare questo fin dall’inizio
questo errore non sarebbe nemmeno accaduto
perché si completerebbe automaticamente
locale confronta e non guarda, lo farò
confrontare a destra è solo un tipo di così io
può risolvere questo problema e ora è felice di
Certo che non è del tutto felice come dico
è un cinque così posso, ad esempio, darlo
un array vuoto e sì fondamentalmente questo
sembra molto meglio ora cosa possiamo fare
facciamo è possiamo provare a generare intendo così
tutto quello che hai visto tutti questi scarabocchi
erano proprio dentro l’editor giusto
niente ti stava davvero succedendo ancora
non posso vedere il risultato del tuo lavoro ma
se per esempio esegui i tipi su
compilatore e lo avrò appena avviato
guarda questo file lo farà automaticamente
generare accanto a questo file ts il
File JavaScript giusto e come ho detto
prima questo è al 100% il tuo codice o il
l’unica cosa che succede è che questi
non ci sono annotazioni di tipo sono scartate così
non c’è
più prima: matrice persona anche il
interfaccia che usiamo per descrivere questo
scompare come JavaScript no
avere una tale preoccupazione ora la cosa bella
su questo è che puoi usare per
esempio costrutto che forse non tutti
I runtime JavaScript hanno così se io ora uso
una funzione lambda qui
il dattiloscritto lo compiler a livello
una funzione normale in modo da poter rendere il vostro
codice bello e bello e usare il nuovo ACMA
script sei o forse ik master seven
già funzioni e ancora downlevel
compilarlo per correre in qualsiasi ambiente
il JavaScript viene eseguito in un altro
cosa interessante che ho detto su di esso
quindi lasciatemi ad esempio qui creare
qualcosa ora come vedi quando lo faccio
spazio di controllo che sanno che dovrei
dare in un’età perché una persona deve
avere un’età secondo la mia definizione
di questo lascia che lo faccia ancora di più
complicato quindi questo è solo per esempio
come una classe viene compilata per il downlevel
giusto così da quando Eggman ha scritto cinque parole
è uscito solo con la sceneggiatura di ACMA sei
puoi effettivamente utilizzare la sintassi della classe in
JavaScript lo compilano in basso
il JavaScript idiomatico che avresti
scritto facendo salutare la funzione
greeter dot prototype dot greet e così
su qualcosa che è molto importante
riconoscere e qui lasciatemi solo palcoscenico
questi file che si arriva a vedere il div
è che adesso posso solo per esempio
vai su questo nome e posso solo dire
fare clic con il tasto destro del mouse su rinomina. Posso chiamarlo pieno
nome e all’improvviso dattiloscritto
sa cambiare esattamente la posizione
deve quindi se si guarda il diff esso
fondamentalmente ha lasciato questo nome qui
perché sapeva che questo nome non lo è
avere qualcosa a che fare con l’interfaccia
persona o con il resto del codice
giusto così è bello che tu possa
ora effettua un refactoring nel tuo codice e
avere la sicurezza che il tuo codice sia
ancora eseguendo il modo corretto
un’ultima cosa che volevo mostrarti
questo su questo esempio è così se ora corro
TSC – in esso
questo in pratica crea un punto di configurazione TS
File JSON e più o meno questo contiene
istruzioni per il compilatore giusto
dice al tuo modulo il sistema del modulo
Sto usando per il mio codice è comune sì e
dice esclude alcune cartelle da esso
che in questo caso non lo fanno davvero
importa ma ora se corro l’orologio posso
per esempio dire oh guarda, so per a
In effetti, non sto prendendo di mira alcun eco
script 5, so per certo che non lo sono
basta prendere di mira qualsiasi browser che io conosca
nodo di targeting versione 6 e così posso
dì solo che il nodo versione 6 supporta una virgola
script 6 Posso solo cambiare questo a 6
e quello che accadrà è che oh mi dispiace
perso non sono in esso di nuovo è che ora
generano il codice mantenendo il
sintassi nativa che uno script virgola 6
fa entrare così ora usano una classe
quando lo scrivi perché il nodo
in realtà lo supporta avviando la versione 6
usano le funzioni lambda e così via
quindi anche se la maggior parte delle volte il tuo codice
può essere bello e può essere già all’altezza del
le ultime specifiche degli script ACMA e tu puoi
continua a correre in qualsiasi ambiente tu
ora fammi chiudere questo per un secondo
e magari mostrarti qualcosa un po ‘
un po ‘più interessante
qui ho anche lo stesso tipo di idea che
significa che l’idea alla base è la stessa
si, va bene, sembra più felice quindi
esempio qui questo codice sta usando questo
strutturare correttamente, quindi c’è una funzione
chiamato punto che viene passato in due
numeri questo è il nuovo questo è un nuovo
sei sintassi di eggman script che puoi
basta creare un letterale in modo che in realtà
significa quello che vedi qui a destra e
puoi anche usare la strutturazione per
estrai le singole proprietà di un
oggetto e tipo di script anche di livello inferiore
compila quello per te
come eseguirlo effettivamente devo fare il
lo stesso dovrebbe comportare lo stesso sì ora
cosa è interessante e quale tipo di script
già supporta è fondamentalmente un sink e
un peso quindi se lo usi ti promette
ora puoi scrivere il tuo codice molto più bello così
l’idea dietro questo esempio è quella
c’è una funzione chiamata delay e quello
restituisce una nuova promessa che otterrò in a
secondo – perché gli scarabocchi ci sono
questo restituisce una nuova promessa e questo
la promessa si risolverebbe solo dopo
un certo numero di millisecondi ora ciò che è bello
su questo è quello per esempio il
funzione ping all’interno di un ciclo chiama dieci
volte il ritardo e attende ogni volta per
questo ritardo si verifica e dopo ciascuno di
quelli che fondamentalmente ama la cosa e
quindi la funzione main è in attesa
il tutto per accadere ora il
scarabocchi che ottieni qui sono causa di a
caratteristica mancante su cui è scritto dattiloscritto
la tabella di marcia è così ora che non possono
livello inferiore compilare un lavandino e un’attesa per
Script ECMO 5 perché se guardi il
codice generato , quindi lascia che lo aggiusti e lo faccia
sa che in effetti sto prendendo di mira come
il mio script 6 quindi ora gli errori dovrebbero andare
via alla fine vanno bene li ‘
in modo che il letto la la ragione per cui non è possibile
scaricare o compilare ottenere una virgola
lo script 5 è perché effettivamente usano
il generatore funziona dietro le quinte
insieme al nuovo rendimento
parola chiave per implementare questo comportamento e
lascia il tuo codice più o meno top-down
Giusto tu scrivi un top-down loro loro
Devo manipolare un po ‘così loro
avvolgilo in un aiutante chiamato il
cameriere ma alla fine della giornata
il codice rimane nello stesso modo in cui lo hai scritto
Va bene così che è che spero che era un
introduzione davvero breve al dattiloscritto
ok ora una delle cose che abbiamo fatto
non arrivare subito dall’inizio
siamo fondamentalmente delle dipendenze, quindi noi
fallito , non abbiamo assolutamente mancato di tenere traccia
di ciò che ogni file javascript ha bisogno e
ciò che fornisce giusto così questo è il
regola di base se vuoi avere un buono
sistema si dovrebbe avere un modo per sapere
cosa deve eseguire ciascun file
correttamente e cosa può offrire
chiunque altro ha costruito sopra di esso e noi
totalmente risucchiato e abbiamo completamente fallito
questo all’inizio e uno dei
le ragioni per questo è perché eravamo
utilizzando gli spazi dei nomi proprio per cui stavi usando
ben lo spazio dei nomi è una parola molto elaborata
per Global è così per esempio in un certo
file ci limiteremmo a raggiungere questo noi
chiamalo namespace dot util dot string
e definire un nuovo metodo su questo
namespace
comunque il problema qui è che lì
non c’è alcuna correlazione tra il file e
in realtà fa questo e lo spazio dei nomi
questo è in realtà stato definito proprio così
qui potrei chiamare il punto delle stringhe di file
J’s I potrebbe chiamare il file utils Dodgers
ma il problema è che nessuno nel mio
la squadra saprebbe dove trovare effettivamente
l’implementazione della funzione trim
giusto potrebbero usarlo ovunque
ma non lo saprebbero necessariamente
a meno che tu non sia molto attento a questo
sapranno necessariamente su quale file
disco dovrebbero aprirsi e cambiarli
che possono cambiare questo metodo così
rinominare i file è stato un enorme dolore rinominato
lo spazio dei nomi era qualcosa che non abbiamo mai fatto
perché non sapremmo dove
sono tutti usati e ovviamente se tu
prova solo a fare una ricerca per stringhe come te
visto prima con il nome giusto a te
avresti colpito così tante cose diverse
occasioni in cui non sapresti quale sia
un falso positivo o meno sì sì, credo
questo è un modo divertente per rappresentare cosa
Penso che sia stato il nostro grafico delle dipendenze al
il tempo, ma a prescindere così indietro che abbiamo avuto
la nostra fonte si divide in client e
server quindi avremmo questo piccolo piccolo
server node.js che dovrebbe servire a tutti
il contenuto e saprebbe come
legge i file dal disco scrive i file sul disco
e così via, ma la maggior parte del codice era
lato client quindi la maggior parte del codice era
in esecuzione all’interno del browser ora per no
J è un dato diritto a tutti quelli
sa solo usi J comuni come a
sistema di moduli e questo è grandioso intendo
è fantastico che la nota sia venuta fuori
qualcosa del genere sin dall’inizio
tuttavia c’è un po ‘di cattura sottile
di cui molte persone non sono a conoscenza
per esempio come pensi Nota
valuta questo codice che hai scritto
giusto così quello che fanno è quando tu quando
caricano il mio modulo punto sì sono loro
leggerà più o meno questo file da
disco sì, fanno un po ‘di
avvolgendo dove hanno aggiunto il loro nome e
così via, ma poi andranno avanti e
valutare e come parte della valutazione di voi
vedere la linea problematica qui è
che in pratica devono fare un
l’implementazione di questo richiede una funzione
e se entri e entri e tieni
su stepping come fino a raggiungere davvero
la carne di questo richiede vedrete a
Alla fine della giornata fa una F a leggere
file canta o equivalente, quindi lo farà
blocca letteralmente l’esecuzione della VM
La VM JavaScript sarà bloccata fino a quel momento
va a morte e cerca di leggere questo
archiviare e perché lo fa perché
è così che il codice è scritto così
il codice a questo punto quando ciò richiede
la funzione restituisce dovrebbe molto bene
restituire ciò che viene esportato da quello
altro file così comune J’s è grande
perché puoi dire esattamente in a
file questo è ciò di cui ho bisogno e questo è
quello che io do a voi nella forma del
esportazioni ma fondamentalmente il problema con
è che è molto adatto per
in esecuzione su un server forse dove hai
diritto di accesso al disco locale che non puoi fare
questo in un browser non si può pretendere che si
spedisci questo codice e poi qui
fondamentalmente una richiesta xhr sincrona a
prova a recuperare la tua dipendenza così è
fondamentalmente nel momento in cui abbiamo guardato
in esso è anche quando AMD è uscito così
AMD sta per un modulo sincrono
definizione e l’unica vera differenza
nel codice è che è tutto
le dipendenze del codice reale sono in a
modo estratto all’esterno in un array così
ciò che significa è quando in realtà
guarda ed esegui questo codice che puoi
Catturare Sì, questo è il codice che mi serve
da eseguire all’interno di questa funzione e
queste sono le dipendenze di cui ho bisogno
soddisfare prima di eseguire quel codice così
fondamentalmente se scrivi un caricatore come
che puoi quindi recuperare in modo sincrono
questo ID dipendenza e una volta ottenuto
che e una volta che avete deciso che
questo è quando puoi effettivamente eseguire il
codice reale in modo che in realtà abbiamo bloccato con
AMD ed io daremo altri esempi
perché lo troviamo così utile da qui
un tempo in cui non c’era nessun altro modulo
sistema giusto c’erano J comuni e
fondamentalmente e okay sì sì prima di quello
la cosa buona di dattiloscritto è quella
in realtà supporta che tu possa venire
giù puoi compilare il tuo JavaScript a
uno dei due o anche qualcosa
chiamano um V modulo universale
definizioni così a dattiloscritto semplicemente
usato un nuovo formato per la dipendenza
arriverà in script ACMA sette I
pensa così basta scrivere il tuo codice
normalmente non ci sono spaghetti non c’è
funzione definita non c’è cattiveria
e poi tu semplicemente con un colpetto di un
opzione come ti ho mostrato lì nel TS
config dot JSON lo fai compilare e
genera codice solo guardando comune o
AMD cerca il codice uno dei vantaggi
di AMD di cui abbiamo iniziato a beneficiare
presto è il codice pigro che carica così uno
delle cose che facciamo è per esempio se
ci apri e sai che spediamo con
come 30 lingue, abbiamo PHP
c-sharp Io non li conosco nemmeno Ruby e
così via come se ci fosse solo così tanti di loro
sai cosa sarebbe davvero
è stupido se tu aprissi un txt
file tutto ad un tratto caricherete quelli
30 lingue solo perché sono lì
e cercare di avviare in su per ogni evenienza
loro sono necessari così che noi siamo veramente
fare è dividere il nostro codice o abbiamo
una sorta di come un sistema di contribuzione
dove da un lato qualcosa che è
per lo più non conosco 30 byte o
qualunque cosa quando lo si minimizza e così via
questo appena descrive al sistema quello
c’è un linguaggio chiamato PHP che
dovrebbe dare il via dopo aver aperto un file PHP
o un file PHP 4 o un file PHP 5 e una volta
che una volta che lo fai una volta in realtà
aprilo quindi dovresti caricare il
modulo a blah blah blah e istanziare
la classe chiamata blah blah così fondamentalmente
quando apri un file di testo, l’ unica cosa
quello caricato che viene caricato è questo pezzo
qui e poi solo dopo quando tu
apri un file PHP che è l’intero PHP
la cosa si carica e questo sì, va bene
scusa, quindi potrebbe sembrare che sia più piccolo
ma in realtà questo è un sacco di codice finito
lì per implementare effettivamente PHP e tutto
la semantica e tutta la colorazione e
quindi sì sì sì ci piace pensare
è come un iceberg proprio come noi
piccola parte che diventa sincrona
caricato che descrive l’ altro
parte dovrebbe calciare in un punto o
un altro e poi, si spera, il grande
pezzo di codice che in realtà sa come
fare PHP è solo pigramente caricare un’altra cosa
che facciamo è approfittare di AMD
caricatore plugin così ogni volta che scriviamo il nostro
il codice ormai è tutto a dattiloscritto
possiamo semplicemente avere anche oh dispiace
le dipendenze regolari possiamo solo
scrivere una dipendenza dal CSS che questo
il file ha bisogno quindi, per esempio, questo è giusto
come il ho appena preso alcune linee dal
codice che rende la linea corrente
Evidenzia quindi quando ti muovi in
editor rendiamo un piccolo highlight di
la linea attuale ora come questa evidenziazione
funziona è che alla fine della giornata
crea addominale e imposta a
certo nome di classe su questo domnode e
poi lo mantiene giusto se ti muovi
il tuo cursore su e giù si muove verso l’alto e
in basso ma essenzialmente è solo un Dom
nodo con un nome di classe e ovviamente a
rendere le cose carine che vuoi mettere
stile della tua app al di fuori del
Codice JavaScript o dattiloscritto così da inserire
in un file CSS così ora ogni volta che finiamo
caricare questo file chiamato linea corrente
evidenzia punto dot sì questa dipendenza
apparirà in realtà invocheremo il
Plugin AMD CSS e che è indicato da
questa borsa qui, quindi caricheremo prima
un plug-in chiamato vs CSS e quindi passare a
come argomento il resto della cosa
e il resto della cosa è più o
meno il percorso per trovare il CSS
file in modo che effettivamente fare uso di questo
entrambi in fase di sviluppo quando noi quando
vuoi correre qualcosa e anche noi
approfittatene quando siamo in bundle, quindi è così
una cosa che facciamo e in realtà stiamo mantenendo
facendo da molto tempo e se
vuoi portare via qualcosa con te
oggi forse dovresti davvero guardare
in bundling e minification è vero
quindi per esempio questo è il tempo di avvio
di codice Visual Studio questo è diviso
in tre quindi il primo pezzo è
fondamentalmente solo un dato
questo è solo elettrone ci vuole un po ‘
mentre per l’ avvio ha bisogno di caricare 40
megabyte di bontà che amiamo noi
voglio avere tutte le API di HTML5 noi
voglio avere tutte le api di nota che è
quello che è giusto è un dato costo
iniziare è fondamentalmente lo stesso costo che
lo faresti quando apri Chrome per
esempio c’è un certo costo fino a quando
JavaScript alla fine dà il calcio a quello
alla fine è solo la logica è solo un po ‘
codice che rende le cose la prima volta
start up e la cosa nel mezzo è
il tempo effettivo trascorso nel caricamento e
valutare il codice il primo viene
quando corriamo con forse migliaia
diversi file
quindi questo è tutto a posto proprio tutti
dice che dovresti raggruppare e ridurre
perché ogni byte che hai inviato sul filo
costa ogni richiesta che fai al
il server ha una certa latenza e tu
dovrebbe cercare di minimizzare quelli, ma questo è
il tutto in esecuzione a livello locale è tutto in esecuzione off
del mio SSD, quindi quello che ho trovato molto
interessante è che semplicemente raggruppando
tutti i file in uno si ottiene in realtà
abbastanza un vantaggio quindi questo è tutto il
stesso codice si finisce per la spedizione lo stesso
cosa in cui non cambi nemmeno niente
il tuo codice è solo una questione di come tu
come lo impacchetta e poi anche e
poi abbiamo pensato oh sì, mettiamoci
tutto in un pacchetto e non si minify
perché molti file giusto forse la gente voleva
per modificarlo e guardarlo e debuggarlo e così via
ma poi anche il minifying aiuta e io
lasciato qui come collegamento alla fine come a
suggerimento , non so se tu lo sapessi ma
per esempio v8 se hai una funzione
sai come ad un certo punto puoi andare avanti
una funzione e dice la funzione punto – stringa
giusto e questo ti mostra di meno il
corpo della funzione ora se il corpo di
la funzione è di oltre 600 caratteri
la funzione non entrerà mai in linea da nessuna parte
indipendentemente da quante volte lo chiami
e come se tu avessi un grosso anello di grasso
di andare a 10 milioni e tu chiami a
singola funzione che aggiunge due numeri
quella funzione non entrerà mai in linea se
è più di 600 caratteri in termini di dimensioni è
solo un numero i ragazzi si avvicinò con V8
e hanno fornito con esso e che non lo fanno
cura ma fondamentalmente alcuni minuti ho sentito
e suona così stupido proprio giusto
riduci il tuo codice più o meno
estrai i commenti che farà tutti
gli identificatori più piccoli e potresti
avere una buona possibilità che tutto a
improvvisa una funzione che non era in linea
prima è ora in linea quindi sì sì dopo
abbiamo finito e dopo ci siamo effettivamente trasferiti
tutto il nostro codice per AMD siamo stati molto felici
a riguardo va bene così questo è più o meno
le basi come noi finalmente dopo a
mentre abbiamo capito le basi che è
come se la dipendenza da manager sì
certo che non lo so
usa buone astrazioni come promesse e
classi e così via, naturalmente, e in una sola
puntare il nostro codice continua a crescere e
in crescita Voglio dire che noterete alla fine
Non lo so nemmeno perché a questo punto
siamo stati divisi in così tanti repository
ma non so nemmeno che ho appena rinunciato a me
non avevo il non mi sentivo come
scrivere una sceneggiatura che va e tira
fonti da diversi repository e tentativi
eliminare i test e così via per capire
fuori
così come continuavamo a crescere, in realtà davo
la mia enorme opinione anti dattiloscritto e
il motivo per cui questo è in realtà
una storia divertente quindi non so se tu
stavano prestando attenzione nel discorso di Eric
stamattina, ma in pratica adesso spediamo
con Internet Explorer che inizia con I
11 e quello che ora chiamano edge così quando
fai f12 se ne hai mai fatti due
che puoi eseguire il debug del tuo JavaScript in
lì giusto così che è in realtà il nostro
componente e una delle cose che loro
chiesto è che le persone quando lo fanno
che a volte le persone finiscono forse
passo per caso all’interno del punto jQuery
min adesso jQuery dot min non è il
il file peggiore, ma è un file
contiene tutto sulla prima riga
giusto quindi eravamo come sì sì solo
prendi il nostro codice, il nostro codice è fantastico
la prima cosa che hanno provato è fallita
miseramente e poi stavo andando a casa
pianto
no, ma in fondo quello che ho capito è io
era tutto a un tratto tra il mio codice di visualizzazione
e tra il mio codice modello così l’editor
è suddiviso in specie di una vista
tipo di controllore del modello di cosa in cui in
il modello che ti mantiene il buffer
solo come una serie di linee e in
questo caso per gli uomini di jQuery ho avuto un array
di un nove era proprio come un tempo molto lungo
stringa e ho realizzato in realtà tutti di a
improvvisamente necessario inserire qualcosa dentro
tra la vista e il modello giusto I
necessario per collegare ciò che è ora nel
fonte e si chiama il modello di vista
e ora ciò che fa questo modello di vista è questo
fondamentalmente trasforma il modello e
divide questa enorme linea in più
linee che
così e le persone semplici parlano è chiamato parola
avvolgendo così mi è stato appena costruendo in su
giusto ma è più o meno quando tu
quando hai una lunga fila giusta e
hai visto questo in tutti i tuoi editor
utilizzare a un certo punto il codice si avvolgerà se
volevi scrivere o potrebbe avvolgere
a livello del viewport o it
fondamentalmente forse avvolge dopo un certo
numero e così via, ma in fondo ho dovuto
introdurre tutto ad un tratto in tutto questo
guarda il codice che era già come
armeggiato e ottimizzato ho dovuto
sostituire completamente le strutture di dati
che non va più alla modella ma
passa attraverso un modello di vista che ha
la possibilità di fare qualcosa con il
testo reale per rendere le cose migliori così
invece di passare tre settimane a fare
che ho trascorso tre settimane andando a
dattiloscritto e più o meno due o tre
giorni facendo questo perché era molto
più facile una volta che stavo convertendo il mio codice in
dattiloscritto era molto più facile da vedere
che tipo di dati struttura la mia vista
bisogni e quindi vorrei solo implementare
loro e fornire loro attraverso questa vista
modello sì, penso che questa sia la mia velocità
non so se questo è veramente importante
come yeah e okay ne abbiamo anche alcuni
regole specifiche del team, ad esempio noi
prova a inserire tipi di ritorno come ho mostrato
prima che il dattiloscritto possa indovinarlo ma
ad un certo punto si sta effettivamente andando a
brucia un po ‘di CPU come se tu
avere un grande progetto grande e tu lo lasci
ha paura di tutto ciò che gli piacerà
prenditi un po ‘di tempo per interferire con tutto
cerchiamo di aiutarlo in realtà
mettere i tipi di ritorno su pubblico
metodi e così via e sì basta agganciare il
roba e PS lo ho prestato si questo è un
esempio anche che fondamentalmente questo è da
dal mio codice, quindi questo dovrebbe dirlo
inizia l’ID del marker ma in JavaScript è
perfettamente bene per dire eliminare la chiave
giusto non definito quindi ho avuto un range e
allora quell’identificatore non esisteva
su questo intervallo in modo da valutare questo
indefinito e quindi il codice sarebbe giusto
diciamo elimina oggetto di indefinito e
è perfettamente soddisfacente
JavaScript è preoccupato che sia perfettamente
bene e questo stava causando abbastanza a
perdita di memoria perché ogni volta che vuoi
tipo che mi piacerebbe
un piccolo pennarello per ricordare qualcosa
non so esattamente cosa ma ogni volta
tu scrivi che avrei uno di questi ragazzi
perdendo bene e non ne avevo idea
fino a quando ho convertito il mio codice
un’altra cosa che ho trovato interessante
è quello che puoi fare con dattiloscritto
puoi praticamente compilare quindi immagina
ora sei due squadre o forse sei due
diversi progetti quindi per esempio noi
consumiamo dal dattiloscritto ragazzi noi
consumare questo servizio dattiloscritto dot J’s
che producono
è proprio come un grosso javascript
file e puoi lanciarlo
dattiloscritto puoi lanciare su un JavaScript
e ti dirà solo di tutti i tipi
bontà su questo è fondamentalmente come
le demo che ho mostrato prima nell’editor
lavoro più o meno prendiamo il buffer
che stai digitando buttalo dentro
l’intelligenza sono davvero persone intelligenti loro
sapere cosa stanno facendo e loro solo
tornare e offrire suggerimenti loro
offrire aleggi e così via basato su di esso e
lo facciamo da loro fondamentalmente spedendo a
noi un file javascript bundle minificato
accompagnato da un DTS che più o meno
descrive cosa c’è dentro quel JavaScript
e concepzionalmente questo DTS è il
API che abbiamo tra i nostri progetti
se inventano una nuova versione lo faremo
ottenere entrambi i nuovi file e lo faremo solo
compilare contro il nuovo DTS e lo faremo
Ottieni errori ovunque essi abbiano
deciso di abbandonare un determinato metodo o
rinominarlo o così via noi facciamo lo stesso quando
spediamo l’ editor di Monaco questa cosa
questa è una libreria e funziona nel
browser e facciamo lo stesso anche quando
ogni volta che sei un’estensione ottieni un
vs codice o il punto si che descrive
tu l’ API del codice vs in cima al quale
potresti costruire c’è anche qualcosa
che quel dattiloscritto supporta loro
chiamato decoratori in questo caso sono
costruttori e noi li usiamo
per ottenere davvero un buon servizio
Iniezione quindi cosa fanno in questo caso
questa è fondamentalmente un’azione nel
editor è l’azione che se si preme
A un certo punto, F12 chiede a qualcuno più intelligente
di quello e dopo i ritorni promessi
può effettivamente
alla definizione di un certo simbolo così
lo faresti su una funzione che sarebbe
ti salterà nel posto in cui il
la funzione è implementata e quindi noi
effettivamente utilizzare questi decoratori per
segnala che dovremmo iniettarne un po ‘
servizi a questa azione in questo caso I
si concentrerà solo sul servizio messaggi
quindi più tardi in questo codice non mi sono adattato
qui dentro questa azione se qualcosa di brutto
succede come un boo-boo come un errore
chiama effettivamente dentro questo messaggio
servizio e dice mostra errore ora cosa
questo significa che quando esegui il codice contro noi
avere un’implementazione del messaggio
servizio che mostra un piccolo elenco a
in alto a destra quindi immagino di esserlo
scrivendo il mio bel codice di Fibonacci e poi
Stavo dicendo andare alla definizione che non ha
funziona funziona sempre da questo era giusto
falso e poi mostrerebbe solo un
messaggio in alto ora lo stesso codice
che ho mostrato a chi è rivolto
definizione di azione è anche la spedizione
con l’ editor di moniker che è a
libreria che gira in un browser tutto a posto
d’un tratto qui non possediamo l’interfaccia utente noi
non possedere l’esterno dell’editor così
non sappiamo come dovrebbe essere questo messaggio
mostrato nell’app in modo predefinito
implementazione spediamo con del
il servizio messaggi è solo uno stupido
console.log ma ovviamente abbiamo dei modi
per le persone che ci integrano
sostituire tale implementazione con
proprio e finalmente all’interno del test
qui ho dovuto fare un po ‘di vernice
l’arte di tagliarle fuori anche loro che si adattano a noi
in pratica dire se il servizio messaggi
all’interno dei test viene mai mostrato un
messaggio di errore lascia che i test falliscano così sì
va bene
a tempi più recenti, quindi in realtà
costruito sopra l’elettrone e lo farei
come visualizzare un po ‘ha alcun
di voi avete sentito prima dell’elettrone okay
freddo
bello quindi spero che non lo troverai anche tu
noioso quindi, ma è facile ok lasciami
ferma le altre cose
okay, ecco qui ho un elettrone minimo
app quindi cos’è l’ elettrone elettronico
fondamentalmente un matrimonio molto bello di
chromium e node.js e come funzionano
è che tu dai loro una sceneggiatura in questo
caso è questo punto principale, sì, lo mostrerò
tu in un secondo
oh ok scusa per quello
hey, va bene, scusami per questo, quindi questo
è main.js
questo è fondamentalmente dove io definisco il
il punto di ingresso a questo esempio è a
esempio di elettrone minimo quindi cosa fa
è utilizza la loro API che si presenta in forma
di questo modulo chiamato elettrone e poi
una volta che l’app è pronta, di solito tu
direi già un documento ma in questo
caso è più complicato giusto esso
in pratica crea una nuova finestra del browser
dice che è la tua larghezza che è la tua
altezza e in questa finestra del browser è
caricherà il file index.html e poi
una volta chiuso è chiuso e una volta
è chiuso si chiude o qualcosa di simile
è così che dovresti leggerlo
all’interno del punto indice HTML è qui
in realtà hai che sei tu
finalmente ottenere sia l’API del browser che il
nodo API questo punto principale J è fondamentalmente
un driver di queste finestre così sai
come Chrome se lanci Chrome e tu
apri una nuova scheda loro fanno un nuovo processo
e tu apri una nuova scheda ne fanno una nuova
processo così come funziona tutto questo
hanno un processo principale che è
fondamentalmente un elettrone guidato da questo
punto principale si e quel processo è sempre
lì e questo è il processo che
comunica al sistema operativo e questo è il
processo che possiede come i pulsanti il
menu e così via e poi ne hai ciascuno
processo di rendering che è più o meno
cosa viene visualizzato all’interno di un documento
quindi fammi solo provare a farlo funzionare
anche mostrarti qui spero che funzioni
quindi questo è un esempio molto semplice
dice solo ciao mondo, ma ho voluto
mostra che già quando l’ho lanciato
giusto c’è un processo principale e poi
a meno che tu non possa riconoscere come ha fatto
ok, è difficile leggere scusa a riguardo
in pratica dice jet principale e poi questo
uno è un processo di rendering che è il
matrimonio del codice HTML e non ora a
meglio dimostrare che questo è davvero un
matrimonio fatto in paradiso
dentro questo rendering sì, ne ho guidato alcuni
codifica e spero che i tuoi occhi non lo siano
sanguinamento in questo momento perché sì su questo
linea stiamo realizzando un elemento Dom
e nella riga successiva stiamo usando il nodo
API per riempire quell’elemento in tutti i punti
non dovresti mai farlo a casa ma
è in realtà una delle cose interessanti
tutto bene l’ho ucciso di elettrone così
ora questa cosa corre e stampa
il suo codice sorgente ma questo mostra solo
come puoi come ti permettono di lavorare
insieme e avere qualcosa che è
sia HTML che node.js quindi è fantastico
se sei come se conoscessi JavaScript
sai html5 sai nota tutto di a
improvvisamente puoi costruire la ricca app e
spedirlo molto facilmente una cosa che volevo
per sottolineare che questo punto principale è J
è un processo molto importante così dentro
questo punto principale non devi fare cosa
Sto per fare ora che è più o
meno è un intervallo fisso e di cosa si tratta
fare è calcolare Fibonacci quale
è sempre buono per calcolare tutti
lo adora e il numero è computing
cresce bene, quindi questo è più o meno
esponenziale nella notazione Oh Big O e così via
su così se ora si esegue questo ciò che sarà
capita che vedi come sto muovendo il
il mouse in un punto si vede come la cosa
okay , è difficile dirlo, forse lo siamo già
perso , ma a questo punto il tutto
la cosa va giù perché come l’elettrone
eredita l’architettura del processo di
cromo quindi questo processo principale
se ora è super impegnato, sarà fondamentalmente
abbattere tutto con esso perché
anche uno spostamento del mouse in realtà va al
processo principale e quindi il movimento del mouse è
inviato al processo di rendering dove
hai davvero la possibilità di farlo
qualcosa e se il tuo processo principale è
occupato la tua app è praticamente morta, quindi è così
solo un po ‘per motivare ok, grazie
tu
So che l’ho fatto questo mi merito questo è giusto
un po ‘per motivare ciò che facciamo
individui al tuo codice così come ho detto
prima di questo è fondamentalmente ciò che otteniamo
da elettrone-elettrone ottiene questo da
cromo e una volta che lo esegui ottieni un
processo principale qui e per ciascuno
finestra si apre simile a come in chrome
apri una nuova scheda ottieni un nuovo rendering
processo ora quello che abbiamo fatto è così
Ti ho mostrato prima che sia molto
pericoloso da fare davvero dentro
quello perché se lo hai per caso
qualcosa che è un po ‘complesso
o un po ‘forse ci vogliono due secondi
tutto ad un tratto si è tutte le finestre
potrebbe non ottenere gli eventi dell’interfaccia utente e così via
in realtà creiamo un nuovo processo
dove facciamo le cose come ad esempio il controllo di
aggiornamenti come questo perché è qualcosa
questo influisce sull’intero prodotto o lo facciamo
cose come la gestione di estensioni e
così via abbiamo altri processi così per
ogni processo di rendering creiamo un
casa di estensione e abbiamo anche lanciato
processi su richiesta come se si facesse a
ricerca avvieremo un processo che avverrà
cerca rapidamente sulla cartella che hai
aperto e restituire i risultati e così
anche noi abbiamo web worker, quindi è così
tutto ciò rende questa cosa molto complicata
perché ognuno di questi processi loro
avere un ambiente di esecuzione diverso
quindi quelli blu sono nodi blu scuro
uno è nodo e un po ‘di elettrone
quello viola è nodo ed elettrone e
html5 quello verde è solo JavaScript
e la web worker API quindi oggi no
avere un’ottima soluzione per questo così è
ancora qualcosa che stiamo cercando di capire
fuori ma usiamo un nome di percorso di cartella
convenzione sorta di cose così noi
avere il codice sotto il coma
sotto il nodo e un browser e quindi un altro
demo rapida cercherò di farti del male
questo è fondamentalmente come facciamo realmente
sviluppare il resto del codice così bene io
spero si arriva a vedere in questo momento
quindi fondamentalmente per sviluppare regolare il codice
più o meno cloni il repo di codice vs
si installa npm in modo concepito e
quindi basta eseguire gulp watch che è giusto
qualcosa che ho già fatto prima
perché non voglio che ti annoi
oggi e una delle cose che abbiamo
investito è che una volta che si avvia questo
gulp guarda che ci vuole un pochino per scaldarsi
così è come se occorra circa 3040 secondi
ma poi ogni piccolo cambiamento che fai
diventa incrementale quindi se lo faccio se lo faccio
modifiche all’interno dello script di tipo di codice vs
codice questo ragazzo per i calci in basso e
proprio come quello di un secondo al secondo o
quindi in pratica ha compilato e
ha generato il JavaScript questo è
qualcosa che abbiamo trovato molto prezioso
come questo ciclo di battitura di qualcosa e
quindi essere in grado di eseguirlo il prossimo
secondo è molto importante per noi così
in realtà lo eseguiamo qui
gli script tagliano il codice e poi e poi
questo funziona, c’è solo il tuo codice
modalità di sviluppo giusto finisce
le fonti non è confezionato come cosa
in bundle ci permette di fare delle belle
debugging e quindi una delle cose che ho
voleva fare qui è ed è di
corso motivato da una cosa interessante
quindi non so se tu se l’hai visto
questa pagina quindi ad un certo punto in cui io
registrati per la cosa go-to loro
mi ha chiesto di dare un divertente slogan su
me stessa
quindi ho pensato che fosse più bello di
bere birra che amo bere
giusto e apparentemente nel frattempo
hanno ribattezzato il campo per dire cosa
compagnia per cui lavori , ecco perché sono
il ragazzo che dice che sono il mio lavoro è quello di
bere birra che è un ottimo lavoro così io
Ho pensato quindi di fare una demo che
in realtà mostra che sono un bevitore di birra
professionalmente quindi qui farò solo
un piccolo cambiamento in alcuni CSS, naturalmente
e farò semplicemente la cosa giusta
che quando aggiorni ora tutto a
improvvisamente ricevi birra nel tuo editore
sfondo ovunque, quindi questo è
solo il meglio di chi ha bisogno di leggere il codice
posso solo dire oh, non ho potuto leggerlo
a causa della birra quindi sì, questo è un
piccolo cambiamento
un’altra cosa che ho voluto mostrare
e questo è qualcosa che ci interessa e che facciamo
quindi fammi semplicemente legare di nuovo questi tasti così
questo basta aggiungere alcuni comandi che ho
localmente non lo spediamo perché
è solo un test delle prestazioni e ora
li fa semplicemente rimbalzare su f2 f f2 f3 f4
quindi quello che fanno è che fanno un sacco di cose
come la f3, okay, devo aggiornare
per scusarlo, quindi se ora preme f3
è solo un test delle prestazioni che corro
di tanto in tanto che è solo recitazione
come se volessi semplicemente tenere premuto il tasto
cursore in basso e proprio come scorrere verso il basso
giusto e questa è una delle cose che
usiamo per profilare e proviamo davvero
porre l’accento su come rendere la nostra modifica o
esibendosi quindi lasciami rimuovere un po ‘
lo sfondo ma fondamentalmente quello che facciamo
e questo è quello che mi piace davvero
più è la a4 uno e spero che si vede
che quindi di solito sto lavorando bene
così vedi la mia produttività salire come
pazzo ma questo è solo un test che è
più o meno digitando un intero file
e di solito come lo gestisco, naturalmente
Apro gli strumenti per gli sviluppatori e il mio profilo
e poi provo a scavare in quello che è
accadendo così che ciò sia detto
in realtà qualcosa che volevo
condividerlo potrebbe potrebbe o potrebbe non
aiutarvi nella vostra vita giorno per giorno, ma io
voluto condividere questa tecnica che noi
finiscono per fare nell’editor così è
in realtà chiamato scrolling virtuale e
quello che ho catturato qui è sul
un lato sto scorrendo dentro l’editor
e dall’altra parte ho mostrato il
strumenti di sviluppo i nodi Dom destra e
vedi che provo a farlo molto lentamente
mentre scorri le linee lungo la vecchia
le linee salgono vengono spinte e poi
alla fine rimosso in modo da poter vedere
che vengono rimossi nella parte superiore e nuovi
arrivano quelli e vedi che hanno questo
animazione di coltello che ti mostra quale
quelli sono freschi e così via, questo è tutto
molto bene questo è, naturalmente
qualcosa che abbiamo avuto ovviamente questo
fatto non ti aiuta davvero se lo hai
una linea davvero molto lunga come la F
ragazzi alti ci hanno chiesto di risolvere ma lo fa
avere alcuni problemi interessanti
proprio così forse i ragazzi in the
la prima riga può leggere che tu in realtà
so cos’è questo è jQuery ma
non è qui perché è jQuery questo
è jQuery minificato giusto così come lo ero io
dire questo in realtà è se tu se tu
mostra questo a qualsiasi ragazzo che ha scritto un
l’editore ti dirà di uscire per favore
perché questo è solo il peggiore che potresti
fai bene perché ad un certo punto se tu
pensaci quando dobbiamo renderizzare
questo e lo rendiamo come ogni testo ciascuno
piccolo testo a colori che facciamo a
estendersi così da creare un Dom
nodo ed è uno spawn e per esempio
jQuery uomini nella prima linea 42 esso
genera che dobbiamo rendere come 3.500
token nel frattempo un file normale come questo
è jQuery non minified è sì solo 280
gettoni perché per lo più ne hanno molti
commenti che amo perché sono
tutto verde significa che le prestazioni sono grandiose
quindi commenti giusti nel tuo codice ma
fondamentalmente il problema che stavamo avendo e
qualcosa che stavo facendo è stato
profilazione di questo e cercando di vedere come
va così anche se il frame rate era
fino alla sonda il tempo della CPU era abbastanza
alto pure e una cosa lo farei
consigliare è di conoscere gli strumenti
hai così non so se lo usi mai
questo fa abilitare il taglio di vernice
questo ti mostrerà cosa
in realtà cromature su ciascuna su ciascuna
telaio e dopo averlo abilitato, ho potuto
vederlo ogni volta che stai scorrendo
il cromo dipingerebbe il tutto
e una delle ragioni per cui lo stava facendo
è perché come parte dello scrolling ero
semplicemente spostando la posizione del Dom
nodi giusto Stavo solo dicendo posizione
è ora -5 okay, dobbiamo tagliarlo corto
comunque noi Lew ci siamo serviti alla fine
translate3d sì, questi sono alcuni link
e sì grazie per avermi ascoltato
oggi sì
tu

Please follow and like us: