Heim > Web-Frontend > js-Tutorial > Hauptteil

NGV: Plugins

DDD
Freigeben: 2024-10-30 02:45:02
Original
250 Leute haben es durchsucht

NGV: plugins

In dieser Episode schauen wir uns den Ansatz von Plugins für NGV an, unser modernes 3D-Viewer-Framework. Dies ist Teil der NGV-Serie.

Entwickler gezielt ansprechen

Ein Ansatz besteht darin, Endbenutzer, die keine Entwickler sind, mit einer „Just-Click-to-Enable“-Lösung anzusprechen. Der Nachteil besteht darin, dass Sie viel zusätzlichen Code und Dokumentation schreiben und pflegen müssen, was es sowohl zeitaufwändig als auch starr macht.
Deshalb richten wir uns gezielt an Entwickler und konzentrieren uns darauf, es ihnen einfach zu machen. Es gibt tatsächlich eine Menge Technologie rund um Plugins und wiederverwendbaren Code, die wir nutzen können: Git, ES-Module, Docker ...
Eine weitere große Vereinfachung besteht darin, keine externen Plugins zu haben: Um die Software zu erweitern, sollten Benutzer das Projekt forken und erstellen.

Wartbarkeit / Wiederverwendbarkeit

Plugins eignen sich gut für wartbare Lösungen. Bei Plugins müssen Sie darüber nachdenken, was Kern ist und was nicht. was soll erweiterbar oder ersetzbar sein. Sie müssen Abstraktionen und Schnittstellen einführen, wodurch der Code isolierter und verständlicher wird. Darüber hinaus schreiben Sie Dokumentationen und Anweisungen, um Menschen außerhalb der Kernentwickler das Verständnis Ihrer APIs zu erleichtern: Das macht es wirklich für alle einfacher.

Ein Beispiel: Wir haben das Plugin ngv-plugin-cesium-widget erstellt, um Cäsium-Code auf niedriger Ebene vom Anwendungscode zu isolieren. Wir planen Dutzende von Anwendungen: Durch den gemeinsamen Code in einem Plugin können wir Code, aber auch Konzepte zwischen Anwendungen teilen. Das Plugin ist generisch und wir stellen Schnittstellen zur Konfiguration bereit: Das Plugin kann jede Konfiguration verarbeiten und ist zukunftssicher.

@customElement('ngv-plugin-cesium-widget')
export class NgvPluginCesiumWidget extends LitElement {
  public viewer: CesiumWidget;

  @property({type: Object})
  cesiumContext: IngvCesiumContext;

  @property({type: Object})
  modelCallback: (name: string, model: Model) => void;
Nach dem Login kopieren

Erweiterung / Anpassung

Mit einem Plugin-System hat der Benutzer die Möglichkeit, über die Konfiguration hinauszugehen. Die Lösung kann individuell angepasst und sogar erweitert werden.

Zum Beispiel haben alle Geodatenanwendungen eine Suchleiste, aber keine hat das Gleiche: unterschiedliche Backends, unterschiedliche Formate, unterschiedliche Funktionen.

Ein Such-Plugin kann mit vordefinierten Anbietern geliefert werden (z. B. OpenstreetMap Nominatim) und ermöglicht Ihnen die Bereitstellung Ihrer eigenen (z. B. Pelias, Photon, ...).

Diese Anbieter sind unabhängig von dieser Anwendung und können problemlos vorgelagert geteilt oder beigesteuert werden.

Darüber hinaus kann das Such-Plugin vollständig durch eine andere Implementierung ersetzt werden, solange es der zugrunde liegenden Schnittstelle gehorcht.

    for (const pc of descr.config.providers) {
      const initialize = providerInitializers[pc.name];
      if (!initialize) {
        console.error("could not find provider", pc.name, "skipping it");
        continue;
      }
      const provider = initialize(pc.config);
      this.providers.push(provider);
    }

    this.autocomplete = new Autocomplete(this.autocompleteRef.value, {

      search: this.search.bind(this),
      onSubmit: this.onSubmit.bind(this),
      renderResult: this.renderResult.bind(this),
      getResultValue: this.getResultValue.bind(this),
    });
Nach dem Login kopieren

Standards

Der Idee von „Plugins“ kommt das Konzept der „Module“ sehr nahe. Tatsächlich sind Ecmascript-Module die technische Art und Weise, wie wir unsere Plugins intern im NGV-Framework „packen“ und verfügbar machen.

In ähnlicher Weise sind Webkomponenten der technische Standard, der es uns ermöglicht, UI-Plugins dem DOM zugänglich zu machen.

Wir können Git auch als das grundlegende Werkzeug betrachten, das unsere Plugin-Strategie ermöglicht, indem es Benutzern die Möglichkeit gibt, sich zu forken, anzupassen und beizutragen.

Abschluss

Unsere Lösung für das Plugin-Problem ist eine Architektur, die auf Standard basiert, das Entwickler-Know-how und das Ökosystem nutzt und einen leichter verständlichen, isolierten und wartbareren Code ermöglicht.

Haben Sie ein Plugin-System entworfen? Oder hast du schon darüber nachgedacht? Teilen Sie mir Ihr Feedback in den Kommentaren mit.

Das obige ist der detaillierte Inhalt vonNGV: Plugins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!