Anleitung
Installation
| 1 | npm install @xpulse/event --registry=https://npm.xpulse.one |
Quickstart
| 1 | import event from '@xpulse/event'; |
| 2 | |
| 3 | |
| 4 | event.on('app:ready', (data) => { |
| 5 | console.log('App bereit:', data.env); |
| 6 | }); |
| 7 | |
| 8 | |
| 9 | event.emit('app:ready', { env: 'production' }); |
Lauschen
| 1 | |
| 2 | event.on('page:ready', (data) => { |
| 3 | console.log(data.lang); |
| 4 | }); |
| 5 | |
| 6 | |
| 7 | event.once('project:ready', (data) => { |
| 8 | console.log('Project geladen:', data.name); |
| 9 | }); |
| 10 | |
| 11 | |
| 12 | const handler = (data) => { ... }; |
| 13 | event.on('page:ready', handler); |
| 14 | event.off('page:ready', handler); |
Feuern
| 1 | event.emit('page:ready', { lang: 'de', route: '/privacy/' }); |
Payload ist optional – ein Event kann auch ohne Daten gefeuert werden:
| 1 | event.emit('app:stopping'); |
Registrierung (optional)
Events können optional registriert werden – das dient der Dokumentation,
ist aber kein Pflichtaufruf vor emit().
| 1 | event.register('page:ready', { |
| 2 | description: 'Seite fertig gerendert, i18n kann übernehmen', |
| 3 | emittedBy: '@xpulse/project', |
| 4 | payload: '{ lang: string, route: string }', |
| 5 | }); |
Ein emit() auf einem nicht-registrierten Event funktioniert problemlos –
das Event taucht nur nicht in event.list() auf.
Introspection
| 1 | |
| 2 | event.list(); |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | event.listeners('page:ready'); |
| 10 | |
| 11 | |
| 12 | |
| 13 | event.listenerCount('page:ready'); |
| 14 | |