Skip to content

Commit 064a18d

Browse files
Apply suggestions from code review
Co-authored-by: Dorin David <70648503+Dorin-David@users.noreply.github.com>
1 parent 8ee6d05 commit 064a18d

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

8-web-components/2-custom-elements/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ Possiamo definirli con delle classi speciali, ed usarli come se fossero sempre s
1111

1212
Gli elementi personalizzati si dividono in due categorie:
1313

14-
1. **Elementi personalizzati autonomi** -- elementi "nuovi di zecca", che estendono la casse astratta `HTMLElement`.
14+
1. **Elementi personalizzati autonomi** -- elementi "nuovi di zecca", che estendono la classe astratta `HTMLElement`.
1515
2. **Elementi built-in personalizzati** -- estendono gli elementi built-in, ad esempio un pulsante personalizzato, basato su `HTMLButtonElement` etc.
1616

17-
Prima di tutto, affrontiamo gli elementi autonomi, dopodiché ci spostiamo su quelli built-in personalizzati.
17+
Prima di tutto, affrontiamo gli elementi autonomi, dopodiché ci sposteremo a quelli built-in personalizzati.
1818

1919
Per creare un elemento personalizzato, abbiamo bisogno di comunicare al browser una serie di dettagli relativi: come mostrarlo, cosa fare una volta che l'elemento viene aggiunto o rimosso dalla pagina, etc.
2020

@@ -59,7 +59,7 @@ class MyElement extends HTMLElement {
5959
Dopodiché, possiamo registrare l'elemento:
6060

6161
```js
62-
// fa in modo che il browser sappia che <my-element> venga fornito dalla nostra classe
62+
// fa in modo che il browser sappia che <my-element> viene fornito dalla nostra classe
6363
customElements.define("my-element", MyElement);
6464
```
6565

@@ -137,7 +137,7 @@ Nell'esempio appena visto, il contenuto dell'elemento viene renderizzato (creato
137137

138138
Come mai non nel `constructor`?
139139

140-
Il motivo è semplice: quando viene chiamato `constructor`, è ancora troppo presto. L'elemento è stato creato, ma in questa fase, il browser non ha ancora processato/assegnato gli i vari attributi: in questo frangente, una chiamata a `getAttribute` restituirebbe `null`. Di conseguenza, non possiamo renderizzare proprio nulla in quel punto.
140+
Il motivo è semplice: quando viene chiamato `constructor`, è ancora troppo presto. L'elemento è stato creato, ma in questa fase, il browser non ha ancora processato/assegnato i vari attributi: in questo frangente, una chiamata a `getAttribute` restituirebbe `null`. Di conseguenza, non possiamo renderizzare proprio nulla in quel punto.
141141

142142
Oltretutto, pensandoci attentamente, in termini di prestazioni, è una cosa saggia ritardare il lavoro fino al momento in cui non serva davvero.
143143

@@ -208,7 +208,7 @@ setInterval(() => elem.setAttribute('datetime', new Date()), 1000); // (5)
208208
```
209209

210210
1. La logica di rendering viene spostata sul metodo helper `render()`.
211-
2. Possiamo chiamarlo una sola volta quando l'elemento viene inserito in pagina.
211+
2. Possiamo chiamarlo una sola volta quando l'elemento viene inserito nella pagina.
212212
3. Al cambio di un attributo, dentro la lista `observedAttributes()`, viene chiamato `attributeChangedCallback`.
213213
4. ...e l'elemento viene renderizzato nuovamente.
214214
5. Alla fine, possiamo creare un timer live.
@@ -241,11 +241,11 @@ customElements.define('user-info', class extends HTMLElement {
241241

242242
Eseguendolo, il contenuto dell'`alert` risulterebbe vuoto.
243243

244-
Questo è proprio perché in questa fase non ci sono figli, ed il DOM è ancora incompleto. Il parser ha collegato l'elemento custom `<user-info>`, e sta procedendo verso i suoi figli, ma nient'altro.
244+
Questo proprio perché in questa fase non ci sono figli, ed il DOM è ancora incompleto. Il parser ha collegato l'elemento custom `<user-info>`, e sta procedendo verso i suoi figli, ma nient'altro.
245245

246246
Se volessimo inviare delle informazioni all'elemento, potremmo usare gli attributi, che sono subito disponibili.
247247

248-
Oppure, se davvero abbiamo necessità di avere a che fare con i figli, possiamo ritardarne impostare un `setTimeout` a latenza zero.
248+
Oppure, se davvero abbiamo necessità di avere a che fare con i figli, possiamo ritardare l'accesso impostando un `setTimeout` a latenza zero.
249249

250250
Funziona così:
251251

@@ -269,7 +269,7 @@ customElements.define('user-info', class extends HTMLElement {
269269

270270
Adesso l'`alert` alla riga `(*)` mostrerà "John", come se lo eseguissimo in modo asincrono, a parsing HTML completato. Possiamo processare i figli se necessario e terminare l'inizializzazione.
271271

272-
D'altra parte, la soluzione non è perfetta, perchè se anche i figli utilizzassero `setTimeout` per inizializzare sé stessi a loro volta, si metterebbero in coda: a quel punto prima verrebbe eseguito il `setTimeout` esterno, e poi quello interno.
272+
D'altra parte, la soluzione non è perfetta, perché se anche i figli utilizzassero `setTimeout` per inizializzare sé stessi a loro volta, si metterebbero in coda: a quel punto prima verrebbe eseguito il `setTimeout` esterno, e poi quello interno.
273273

274274
E così non avremmo risolto granché, dato che di nuovo l'elemento esterno terminerebbe prima di quello interno.
275275

@@ -305,7 +305,7 @@ Non c'è una una callback che si attiva dopo che gli elementi annidati sono pron
305305

306306
## Elementi built-in personlizzati
307307

308-
I nuovi elementi che creiamo, come `<time-formatted>`, non hanno una semantica associata. Sono del tutto sconosciuti per motori di ricerca, e dispositivi di accessibilità, che non possono quindi gestirli.
308+
I nuovi elementi che creiamo, come `<time-formatted>`, non hanno una semantica associata. Sono del tutto sconosciuti per i motori di ricerca e i dispositivi di accessibilità, che non possono quindi gestirli.
309309

310310
Queste cose possono avere la loro rilevanza. Ad esempio al motore di ricerca potrebbe interessare sapere che un componente mostra l'orario. E se stiamo creando un particolare tipo di pulsante, perché non riutilizzare la funzionalità esistente di `<button>`?
311311

@@ -319,7 +319,7 @@ Per esempio, i pulsanti sono una istanza di `HTMLButtonElement`, e possiamo part
319319
class HelloButton extends HTMLButtonElement { /* metodi degli elementi personalizzati */ }
320320
```
321321

322-
2. Forniamo il terzo argomenti a `customElements.define`, che specifica il tag:
322+
2. Forniamo il terzo argomento a `customElements.define`, che specifica il tag:
323323
```js
324324
customElements.define('hello-button', HelloButton, *!*{extends: 'button'}*/!*);
325325
```
@@ -359,7 +359,7 @@ customElements.define('hello-button', HelloButton, {extends: 'button'});
359359
*/!*
360360
```
361361

362-
Il nostro nuovo pulsante estende quello built-in. Ne mantiene gli stili e le caratteristiche standard come ad esempio, l'attributo `disabled`.
362+
Il nostro nuovo pulsante estende quello built-in. Ne mantiene gli stili e le caratteristiche standard, come ad esempio l'attributo `disabled`.
363363
364364
## Riferimenti
365365

0 commit comments

Comments
 (0)