Wie Sie richtig importieren/exportieren von Klassen in eckigen Module?

Diese Frage kommt aus dem Kontext von Enterprise Anwendung.

Von allen Büchern, die ich gelesen habe-und online-Proben, die ich gesehen habe über angular-Anwendungen, jedes mal, wenn wir eine Klasse erstellen (Komponente, service, Organisation, etc.) wir exportieren Sie auf die Typ-definition, und dann direkt importieren Sie Sie, wo immer wir benötigen eine Referenz (ähnlich wie mit namespaces in C#) unabhängig der beiden Klassen gehört zu der gleichen oder verschiedene Winkel-Module.

Ex:

//In 'Commons/logger.service.ts'
export class LoggerService { ... }

//In 'Core/common.service.ts'
export class CommonService { ... }

//In 'Products/' module
import { LoggerService } from '../Commons/logger.service'
import { CommonService } from '../Core/common.service'

export class ProductComponent { ... }

Ich angefangen, einen (großen) enterprise-application-Projekts und bemerkte ein Ansatz, den ich noch nie zuvor gesehen hatte, Sie erstellten Dateien zu sammeln jede Art von Klasse (service, Organisation, Methode, parameter, Komponenten -) Export jeder von Ihnen, exportieren Sie jede dieser Dateien auf das entsprechende Winkel-Modul-Datei, und dann, anstatt den Import der Typ direkt aus dem Typ der Datei, führen Sie den Import aus der angegebenen Modul.

Vorherigen Beispiel würde verwandelt werden, so etwas wie dieses:

//In 'Commons/logger.service.ts'
export class LoggerService { ... }

//In 'Commons/services.ts'
export * from './logger.service.ts'
export * from './other.service.ts'
export * from './another.service.ts'

//In 'Commons/commons.module.ts'
export * from 'services.ts'
export * from 'entities.ts'
/* ... */


//In 'Products/' module
import { LoggerService, OtherService } from '../Commons/commons.module'

export class ProductComponent { ... }

Gegeben, dass dieser Ansatz ist viel Ausführlicher als die zuvor und die, die es provoziert peinliche Ergebnisse in einigen Fällen (zyklische Referenz-Warnung, wenn das importieren von Klassen innerhalb des gleichen Moduls)

Meine Fragen sind:

  1. Welche Vorgehensweise wird empfohlen, sich von einem guten design oder beste Praktiken Perspektive?
  2. Ist dieser Ansatz besser als die früheren? Warum? Für welche Fälle?
  3. Warum dieser Ansatz nicht eingeführt, auf die wichtigsten Literatur-und Quellenangaben (eckige online-docs, kantige, Bücher, ...)?
  4. Was sind die vor-und Nachteile dieses Ansatzes.
  • Ich Schätze, dass, wenn Sie zirkuläre Abhängigkeiten, dieser Ansatz ermöglicht Ihnen, richtig zu Steuern, in welcher Reihenfolge die Module geladen sind
  • Ich denke, möchten Sie vielleicht zu suchen in einem Gemeinsamen Modul in Ihrer Anwendung, die Importe und Exporte. Dieses gemeinsame Modul kann dann importiert werden, in anderen Modulen, wie gebraucht. Hier finden Sie einige Winkel-Dokumentation: Winkel.io/guide/sharing-ngmodules
  • Dieser Ansatz ist ideal für das sammeln gemeinsamen die Einfuhren um Doppelarbeit zu vermeiden. Was ich hier spreche, ist eine interne Richtlinie, die auf mein Unternehmen, in dem, Wann immer Sie benötigen einen geben, anstatt Sie zu importieren direkt von der Datei, die Sie importieren muss es vom Modul, ebenso, wenn Sie exportieren eine neue Art, müssen Sie Folgen alle der "Export-Hierarchie" erwähnt, auf der Beispiele. Ich persönlich denke, das ist over-engineering, Probleme zu lösen, die möglicherweise nicht vorhanden in den ersten Platz. Das ist, warum ich bin auf der Suche nach der Meinung einiger Experten auf dem Thema.
  • Ich sehe, was Sie reden jetzt. Mein Fehler, habe ich falsch verstanden, der mittlere Abschnitt erklären Ihr Ziel.
  • Ich weiß nicht, die Antwort ... aber ich Frage mich, was der "Baum schütteln" würde, tun Sie dies, wenn Sie immer verlangen, dass alles von allem?
  • In der Regel, dass sollte nicht der Fall sein, hauptsächlich werden Sie Referenz-Typen, die auf dem common und core-Modul von anderen Modulen, aber es ist selten für die Arten, die zwischen verschiedenen und unabhängigen, Module referenzieren sich gegenseitig. Dieser Ansatz scheint zu sein, genau das gleiche, wie wenn du nur den Import der Dateitypen direkt aus Ihren Dateien, nur dass IMO, wir erschweren den Prozess, um es sich "besser organisiert", es macht Sinn... aber ich denke, nur die over-engineering.

InformationsquelleAutor mdarefull | 2018-03-01
Schreibe einen Kommentar