Kialakítási szempontok

Befejeződött

A kódszervezéshez névtereket vagy modulokat használhat, és mindkettő tartalmazhat kódot és deklarációkat.

Bár a névterek könnyen használhatók egyszerű implementációkhoz, és nem függnek a modulbetöltőktől, a modulok további előnyöket kínálnak, amelyeket a névterek nem. Modulok:

  • Deklarálja a függőségeket.
  • Jobb kódhasználatot biztosít.
  • Erős elkülönítést biztosít.
  • Rejtse el a moduldefiníciók belső utasításait, és csak a deklarált összetevőhöz társított metódusokat és paramétereket jelenítse meg.
  • Jobb eszköztámogatást biztosít a kötegeléshez.
  • A Node.js-alkalmazások névtereinél ajánlott, mert a modulok az alapértelmezettek.
  • Meg tudja oldani a felülről lefelé mutató JavaScript-folyamatokkal kapcsolatos problémákat, mert egy külső metódusra vagy osztályra mutató hivatkozás csak metódushívás esetén lesz példányosítva.

Az ECMAScript 2015-től kezdve a modulok a nyelv natív részei, és minden megfelelő motor-implementációnak támogatnia kell. Az új projektek esetében tehát a modulok használata javasolt a kódszervezéshez.

Megjegyzés:

Nem ajánlott egyesíteni a névtereket és a modulokat ugyanabban a projektben.

Az alábbi táblázat összefoglalja és összehasonlítja a modulokat és a névtereket.

Modul Névtér
A modulok használatával a kódot különálló fájlokba rendezve a funkciók logikai csoportosításához. A névterek használatával a kódot külön fájlokba rendezi a funkciók logikai csoportosításához.
A modulok a helyi hatókörükben futnak, nem a globális hatókörben. A névterek a helyi hatókörükben futnak, nem a globális hatókörben.
A modulok deklaratívak; a modulok közötti kapcsolatokat az import és az exportálás tekintetében a fájl szintjén kell meghatározni. A névterek nem deklarálhatják függőségeiket.
Egy modult egy fájlban lévő kulcsszóval vagy import egy export adott kulcsszóval határozhat meg. A legfelső szintű importálást vagy exportálást tartalmazó fájlok modulnak minősülnek. A névteret a namespace fájlban lévő kulcsszóval határozhatja meg. A névtér-utasítások beágyazhatók és több fájlra is kiterjedhetnek.
Ha a modulon kívül szeretné elérhetővé tenni az egyes modulösszetevőket, használja a kulcsszót export . Ha a névtéren kívül szeretné elérhetővé tenni az egyes névtérösszetevőket, használja a kulcsszót export .
Ha egy másik modul egyik moduljából származó összetevőt szeretne használni, használja a kulcsszót import . Ha egy másik TypeScript-fájl egyik névteréből származó összetevőt szeretne használni, adjon hozzá egy utasítást reference a tripla perjel (///) szintaxissal.
Egy modul és annak minden függő fájljának fordításához használja a tsc --module parancsot. A névtereket és azok függő fájljait tartalmazó TypeScript-fájlok egyes JavaScript-fájlokba való fordításához használja a tsc parancsot.
Nem lehet több fájlból álló modulokat egyetlen modulra lefordítani. A névtereket tartalmazó TypeScript-fájlok egyetlen JavaScript-fájlba való fordításához használja a tsc --outFile parancsot.
A modulok egy modulbetöltő API használatával importálnak egy másik modult. A modul lefordításakor meg kell adnia az API-t. A névterek betöltéséhez adja meg a .js fájlneveket (sorrendben) a <script> HTML-oldalon lévő címke használatával.
A modulokban újra exportálhatja az összetevőket az eredeti nevükkel, vagy átnevezheti őket. A névterekben nem exportálhatja újra az összetevőket, és nem nevezheti át őket.