Cicle de vida d'un plugin
Un plugin és un mòdul ES, normalment empaquetat en un sol fitxer JavaScript. Exporta dues funcions, que retornen una Promise:
initialize(api)inicia el plugin.dispose(api)l'atura i desfà tot el que ha fetinitialize.
import type { DemoShellApi, BrokerDisposableHandler } from "@uxland/harmonix-demo-shell";
let subscription: BrokerDisposableHandler | undefined;
export const initialize = async (api: DemoShellApi) => {
await api.regionManager.registerMainView({
id: "orders",
factory: async () => document.createElement("orders-list"),
});
subscription = api.broker.subscribe("user:changed", () => console.log("Reload the orders"));
};
export const dispose = async (api: DemoShellApi) => {
subscription?.dispose();
await api.regionManager.removeView(api.regionManager.regions.main, "orders");
};
El cicle de vida d'un plugin té dues parts:
- Cicle de vida fora de línia: el desenvolupament, el manteniment i la distribució del plugin.
- Cicle de vida en línia: el que passa amb el plugin dins d'un shell en execució.
Cicle de vida fora de línia
- Creació
- Desenvolupament i proves
- Publicació
- Manteniment
- Actualitzacions
- Obsolescència
- Desactivació
Les fases 1, 2 i 4 tenen lloc en local. Les fases 3, 5, 6 i 7 impliquen el Plugin Store, que les hauria de permetre totes. Alguns Plugin Stores també permeten un desplegament progressiu a la fase 3: una versió nova comença amb un subconjunt d'usuaris fins que és prou madura. Això és una capacitat del Plugin Store, no d'Harmonix.
Cicle de vida en línia
Càrrega
ordersvistes a les regions
alertsvistes a les regions
insights
importer()AvaluaciómoduleInicialitzacióinitialize(api)Renderitzatfactory()Alliberamentdispose(api)imported plugin: orders
imported plugin: insights
initialized plugin: orders
imported plugin: alerts
Failed to load plugin insights: Error: settings not found
initialized plugin: alerts
// insights ha fallat i queda aïllat: orders i alerts continuen
- Càrrega. El shell crida l'
importer()de laPluginDefinitiondel plugin. Normalment és unimport()dinàmic de l'URL del plugin al Plugin Store, o d'un mòdul local durant el desenvolupament. - Avaluació. El navegador avalua el mòdul, que exposa
initializeidispose. - Inici. Harmonix crida
initialize(api)amb una instància de l'API creada per a aquest plugin. Tots els plugins s'inicien en paral·lel. Si un llança un error, l'error es registra a la consola i els altres plugins continuen. - Pintat. Les vistes registrades apareixen a les seves regions. La
factoryde cada vista s'executa quan la seva regió necessita l'element. - Alliberament. El shell crida
dispose(api). Aquesta funció és obligatòria i ho ha de desfer tot: eliminar les vistes, alliberar les subscripcions i els handlers de peticions del broker, aturar els temporitzadors i alliberar qualsevol altre recurs.
Consulta Construir un shell per veure aquest procés des del costat del shell.