You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/13-modules/02-import-export/article.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ Ad esempio, i seguenti exports sono tutti validi:
28
28
````smart header="Non c'è bisogno del punto e virgola dopo l'export di una classe/funzione"
29
29
Da notare che il termine `export` prima di una funzione, non la rende un'[espressione di funzione](info:function-expressions). Rimane sempre una dichiarazione di funzione, viene semplicemente esportata.
30
30
31
-
Molte style guide di JavaScript sconsigliano l'utilizzo del punto e virgola dopo la dichiarazione di una classe o funzione.
31
+
Molte guide style di JavaScript sconsigliano l'utilizzo del punto e virgola dopo la dichiarazione di una classe o funzione.
32
32
33
33
Questo è il motivo per cui non c'è alcun bisogno del punto e virgola dopo `export class` e `export function`:
34
34
@@ -77,7 +77,7 @@ sayHi('John'); // Hello, John!
77
77
sayBye('John'); // Bye, John!
78
78
```
79
79
80
-
Ma ne caso in cui si fossero molti import, potremmo importare tutto come un oggetto, utilizzando `import * as <obj>`, ad esempio:
80
+
Ma nel caso in cui ci fossero molti import, potremmo importare tutto come un oggetto, utilizzando `import * as <obj>`, ad esempio:
Nella pratica, esistono principalmente due tipi di moduli.
156
+
In pratica, esistono principalmente due tipi di moduli.
157
157
158
158
1. Moduli che contengono una library, pacchetti di funzioni, come `say.js` visto sopra.
159
159
2. Moduli che dichiarano una singola entità, esempio un modulo `user.js` che esporta solamente `class User`.
160
160
161
-
Nella maggior parte dei casi, si preferisce il secondo approccio, in modo tale che "ogni cosa" stia nel suo modulo.
161
+
Nella maggior parte dei casi, si preferisce il secondo approccio, in modo tale che ogni "cosa" stia nel suo modulo.
162
162
163
-
Naturalmente, questa pratica richiede l'utilizzo di molti files, poiché ogni cosa richiede il suo modulo, ma questo non è un problema. In realtà, la navigazione del codice diventa più semplice se tutti i file hanno dei nomi parlanti e sono ben strutturati all'interno di cartelle.
163
+
Naturalmente, questa pratica richiede l'utilizzo di molti files, poiché ogni cosa richiede il suo modulo, ma questo non è un problema. In realtà, la navigazione del codice diventa più semplice se tutti i file hanno dei nomi descrittivi e sono ben strutturati all'interno di cartelle.
164
164
165
-
I moduli forniscono una speciali sintassi, `export default` ("export di default"), per rendere la pratica "una cosa per modulo" più elegante.
165
+
I moduli forniscono una speciale sintassi, `export default` ("export di default"), per rendere la pratica "una cosa per modulo" più elegante.
166
166
167
-
E' sufficiente inserire `export default`, prima dell'entità da esportare:
167
+
E' sufficiente inserire `export default` prima dell'entità da esportare:
168
168
169
169
```js
170
170
// 📁 user.js
@@ -193,7 +193,7 @@ Gli import senza parentesi graffe sono più eleganti. Un errore comune quando si
193
193
| `export class User {...}` | `export default class User {...}` |
194
194
| `import {User} from ...` | `import User from ...`|
195
195
196
-
Tecnicamente, potremmo avere sia il default che il named export nello stesso modulo, ma nella pratica gli sviluppatori non lo fanno. Un modulo può essere named export o default export.
196
+
Tecnicamente, potremmo avere sia il default che il named export nello stesso modulo, ma in pratica gli sviluppatori non lo fanno. Un modulo può essere named export o default export.
197
197
198
198
Poiché possiamo utilizzare al massimo un default export per file, l'entità esportata non richiede alcun nome.
199
199
@@ -286,17 +286,17 @@ import {User} from './user.js';
286
286
// import {MyUser} non funzionerebbe, il nome deve essere {User}
287
287
```
288
288
289
-
...Mentre per un default export, noi possiamo decidere il nome in fase di importazione:
289
+
...Mentre per un default export, possiamo decidere il nome in fase di importazione:
290
290
291
291
```js
292
292
import User from './user.js'; // funziona
293
293
import MyUser from './user.js'; // funziona
294
-
// potrebbe essere anche import Anything... e comunque funzionerebbe
294
+
// potrebbe essere anche import Anything... e funzionerebbe comunque
295
295
```
296
296
297
297
Quindi i membri del team potrebbero utilizzare nomi differenti per importare le stesse cose, e questa non è una buona cosa.
298
298
299
-
Solitamente, per evitare questo problema, e mantenere il codice consistente, ci si pone come regole che le variabili importate debbano corrispondere ai nomi dei file, esempio:
299
+
Solitamente, per evitare questo problema, e mantenere il codice consistente, ci si pone come regola che le variabili importate debbano corrispondere ai nomi dei file, esempio:
300
300
301
301
```js
302
302
import User from './user.js';
@@ -351,7 +351,7 @@ Il "main file", `auth/index.js` esporta tutte le funzionalità che vogliamo forn
351
351
352
352
L'idea è che gli esterni, gli altri programmatori che utilizzano il nostro package, non dovrebbero preoccuparsi della struttura interna, alla ricerca dei file all'interno del nostro package. Esportiamo solamente ciò che è necessario in `auth/index.js` e teniamo il resto nascosto da occhi indiscreti.
353
353
354
-
Poiché le funzionalità di export sono sparpagliate nel package, possiamo importarle in `auth/index.js` ed esportarle da li:
354
+
Poiché le funzionalità di export sono sparpagliate nel package, possiamo importarle in `auth/index.js` ed esportarle da lì:
355
355
356
356
```js
357
357
// 📁 auth/index.js
@@ -403,13 +403,13 @@ Potremmo incontrare due problemi:
403
403
404
404
2.`export * from './user.js'` ri-esporta solamente i named exports, ma ignora quelli di default.
405
405
406
-
Nel caso in cui volessimo ri-esportare sia i named che i defaul export, allora abbiamo bisogno di due istruzioni:
406
+
Nel caso in cui volessimo ri-esportare sia i named che i defaul export, allora avremmo bisogno di due istruzioni:
407
407
```js
408
408
export*from'./user.js'; // per ri-esportare i named exports
409
409
export {default} from'./user.js'; // per ri-esportare i default export
410
410
```
411
411
412
-
Queste stranezza nella ri-esportazione di un default export, è unadelleragionidelperché alcunisviluppatorinonamanoidefaultexport, mapreferisconoquellididefault.
412
+
Queste stranezze nella ri-esportazione di un default exportsonotraleragionidelpercuialcunisviluppatorinonamanoidefaultexport, mapreferisconoquellinamed.
413
413
414
414
## Riepilogo
415
415
@@ -438,7 +438,7 @@ Import:
438
438
- Importa il modulo (il suo codice viene eseguito), ma non lo assegna ad alcuna variabile:
439
439
-`import "module"`
440
440
441
-
Possiamo inserire le istruzioni di `import/export`in cima o incosa allo script, non ha importanza.
441
+
Possiamo inserire le istruzioni di `import/export`in cima o incoda allo script, non ha importanza.
0 commit comments