Allgemeine Richtlinien für die Entwicklung von Widgets

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 4 Minuten Lesedauer
  • Beachten Sie bei der Entwicklung anwenderdefinierter Widgets diese allgemeinen Richtlinien für optimale Leistung, skalierbare Entwicklung und eine gute Anwender-Experience.

    Erstellen Sie einen Standardstatus, der dem Endbenutzer ein Beispiel bietet

    Für ein Widget sind keine Instanzoptionen definiert, wenn es zu einer Seite hinzugefügt wird. Ein Widget in diesem leeren Zustand kann leer erscheinen und Verwirrung verursachen. Stellen Sie in Situationen, in denen ein Widget eine Erstkonfiguration erfordert, sicher, dass Ihr Widget einen Standardstatus hat, der dem Administrator mitteilt, welche Konfiguration erforderlich ist.

    Widgets können auch mit Demo-Daten erstellt werden. Demo-Daten können auch verwendet werden zum:

    • Deutlichen Demonstrieren der Widget-Funktionalität für den Benutzer.
    • Bereitstellen von Daten, wenn Sie eine Vorschau des Widget im Widget-Editor anzeigen. (Demo-Daten sind im Designer nicht sichtbar).

    Erfahren Sie mehr: Tutorial: Erstellen Sie ein benutzerdefiniertes Widget.

    Betten Sie ein Widget ein, anstatt es zu klonen

    Durch das Einbetten eines vorhandenen Widgets in Ihr benutzerdefiniertes Widget werden bereits vorhandene Funktionen genutzt, ohne dass Code kopiert oder dupliziert wird. Sie können weiterhin Parameter an das eingebettete Widget übertragen, um dessen Verhalten zu steuern.

    Weitere Informationen: Ein bestehendes Widget einbetten

    Vermeiden Sie die Verwendung großer Datensätze, um die Leistung zu verbessern

    Das Abfragen von Daten, das Auswerten von ACLs, das Ausführen von Geschäftsregeln und die Datenverarbeitung dauern einige Zeit und können die Leistung verlangsamen. Bestimmen Sie, wie viel Datenportal-Anwender benötigen, und wenden Sie dann die entsprechenden Grenzwerte und Filter auf Ihre Skripts und Abfragen an. Isolieren Sie Widgets, die erhebliche Daten erfordern oder die Verarbeitung auf eigenen separaten Seiten im Portal erfordern. Vermeiden Sie die Implementierung der folgenden Elemente, die große Datensätze verwenden:

    • Geskriptete Menüelemente, die große Datenmengen laden, was dazu führen kann, dass jede Seite im Portal langsam geladen wird.
    • Große Dateien und Anhänge, z. B. hochauflösende Mediendateien oder Schriftarten aus der Tabelle „Anhänge“ [sys_attachment].
    • Widgets werden automatisch aktualisiert. Jedes Mal, wenn der Client-Controller eines Widgets aufruft Server.Update() , SpUtil.Update() , Server.refresh() , Oder SpUtil.refresh() , Führt die Anwendung das Serverskript des Widgets aus und sendet ein Datenobjekt an den Client zurück.
    • Ungefilterte Datensatzbeobachter. Die RecordWatch() Die Funktion überwacht auf Aktualisierungen an einer Tabelle oder einem Filter und gibt den Wert aus der Rückruffunktion zurück. Durch das Hinzufügen von Filtern für bestimmte zu überwachende Felder wird die Anzahl der Aufrufe eines Widgets an den Server reduziert. Wenn Sie angeben, wann Widgets aktualisiert werden sollen, als Antwort auf einen Datensatzersteller, der den Client über ein Update in der Rückruffunktion benachrichtigt, kann dies auch die Leistung verbessern.
    • Serverseitige Skripts mit GlideRecord-Abfragen ohne SetLimit Funktion. Mit SetLimit Die Funktion kann die Anzahl der zurückgegebenen Datensätze einschränken und die Antwortzeit für Abfragen verbessern. Um die Flexibilität zu erhöhen, können Sie dieses Limit an eine Instanzoption binden, anstatt einen hartcodierten Wert zuzuweisen (z. B. gr.setLimit (options.limit || 100)).
    Erstellen Sie eine Direktive, anstatt ein komplexes Widget einzubetten

    Wenn ein eingebettetes Widget vom Server aufgerufen wird, werden alle diesem Widget zugeordneten Skripts zurückgegeben. Wenn Sie nur einen Unterabschnitt eines Widgets benötigen, führt das Einbetten des gesamten Widgets zu unnötigem Aufwand. Verwenden Sie stattdessen Direktiven, um einfachen Code zwischen Widgets auszutauschen. Direktiven sind beispielsweise beim Erstellen von UI-Komponenten hilfreich. Komplexe Komponenten mit serverseitiger und clientseitiger Funktionalität lassen sich am besten als Widgets verwenden. Verwenden Sie eine Direktive anstelle eines eingebetteten Widgets zum:

    • Freigeben des Gültigkeitsbereichs bzw. des benutzerdefinierten Verhaltens für mehrere Widgets.
    • Freigeben eines wiederverwendbaren, leichten Unterabschnitts eines Widgets.
    • Freigeben einer gemeinsame Benutzeroberfläche, z. B. einer Liste oder einen Avatar.
    • Verhalten des Widget erweitern.

    Erfahren Sie mehr: Wiederverwenden von Komponenten mit Angular Providers.

    Verwenden Sie einen Dienst oder eine Anlage, um Daten freizugeben und den Status zu behalten

    Datendienste und Anlagen behalten den Status in einem Widget bei, ohne dass mehrere Aufrufe des Servers erforderlich sind. So können Sie:

    • Widgets beim Ändern von Datensätzen oder Filtern synchron halten.
    • Daten zwischen Widgets teilen.
    • Leistungsfähigere Widgets entwickeln.

    Erfahren Sie mehr: Wiederverwenden von Komponenten mit Angular Providers.

    Ereignisse mit einem Publish-/-Subscribe-Dienst verwalten

    Vermeiden Sie das Benutzen von $broadcast in DOM. $broadcast sendet den Ereignisnamen an alle untergeordneten Bereiche, die registrierte Listener benachrichtigen. Dies kann ein teurer Auruf sein, für den die Verwendung des globalen Objekts $rootScope erforderlich ist.

    Verwenden Sie stattdessen einen Publish-/Subscribe-Dienst, um Ereignisse zu verwalten. Wenn Sie einen Publish-/Subscribe-Dienst verwenden, besteht eine klare Beziehung zwischen Ihren Widgets über Callback-Handler. In diesem Modell können Sie den Status Ihrer Ereignisse besser steuern.

    Verwenden Sie REST-Aurufe oder server.get, um Daten vom Server abzurufen

    Wenn Sie server.update() aufrufen, wird das gesamte Widget vom Server zurückgegeben. Wenn Ihr Widget abweichende Codepfade enthält, können mehrere Aufrufe zur Aktualisierung des Servers die Leistung beeinflussen. Verwenden Sie als Regel Ihr Serverskript, um den Anfangsstatus Ihres Widgets festzulegen. Verwenden Sie für nachfolgende Aktualisierungen Scripted REST APIs, die in Ihrer Instanz ein Skript enthalten. Diese Übung:

    • trennt die Geschäftslogik von den Elementen der Benutzeroberfläche.
    • zentralisiert Ihren Code, sodass Änderungen an einer Stelle vorgenommen werden können.
    Sie können auch server.get nutzen, um Informationen an den Server weiterzuleiten. Verwenden Sie diese Funktion zusammen mit inpn ut.action um bestimmte Teile des Serverskripts auszuführen.
    Entwicklung im Hinblick auf Lokalisierung, Zugänglichkeit und Benutzeroberfläche

    Befolgen Sie diese Richtlinien, um eine optimale Benutzererfahrung zu erzielen:

    • Berücksichtigen Sie die Auswirkungen Ihres Widgets in einer mobilen Umgebung. Vermeiden Sie beispielsweise die Verwendung von Mouseover- und anderen Ereignissen, die nicht auf ein Mobilgerät übertragen werden können.
    • Verwenden Sie SCSS-Variablen, um Elemente wiederzuverwenden. Siehe SCSS-Variablen.
    • Verwenden Sie bei der Verwendung von Farben Variablennamen.
    • Umbruch von Zeichenfolgen für die Übersetzung in Lokalisierungs-APIs. Weitere Informationen finden Sie unter Ein Widget internationalisieren.
    Entfernen Sie nicht verwendete Angular Provider aus dem Client-Skript
    Um die Wartung zu erleichtern, entfernen Sie alle nicht verwendeten Angular Provider, die in die Client-Skriptfunktionsanweisung eingefügt wurden.
    Verwenden Sie nicht <script> tags in HTML templates
    Um die Wahrscheinlichkeit von Produktionsproblemen in zu verringern Serviceportal, Vermeiden Sie die Verwendung von Inline-Vorlagen mit <script> tags in a widget's HTML template. Instead, create a related Angular ng-template record for the widget.