Managers API Reference
- Home
- Documentation
- API Reference
- Managers API Reference
Now.js provides several core managers that handle different aspects of the application. Each manager is responsible for a specific functionality and can be accessed through the Now.js framework instance.
ComponentManager
Handles component registration, lifecycle, and rendering.
Methods
define(name: string, definition: Object): void
-
Register a new component
ComponentManager.define('user-card', { template: '<div class="user-card">{{name}}</div>', state: { name: '' }, methods: { updateName(newName) { this.state.name = newName; } } });
mount(element: HTMLElement, name: string, props?: Object): Promise<Object>
- Mount component to DOM element
unmount(element: HTMLElement): void
- Unmount component from DOM
Events
component:mounted
- Fired when component is mountedcomponent:unmounted
- Fired when component is unmountedcomponent:updated
- Fired when component is updated
RouterManager
Handles client-side routing and navigation.
Methods
navigate(path: string, params?: Object): Promise<boolean>
- Navigate to path with optional parameters
register(path: string, config: Object): void
-
Register route configuration
RouterManager.register('/user/:id', { template: '/templates/user.html', title: 'User Profile' });
getParams(): Object
- Get current route parameters
Events
route:after
- Fired when route changesroute:error
- Fired on routing error
StateManager
Manages application state and state changes.
Methods
registerModule(name: string, module: Object): void
-
Register state module
StateManager.registerModule('user', { state: { name: '', email: '' }, mutations: { setUser(state, user) { state.name = user.name; state.email = user.email; } } });
commit(type: string, payload?: any): void
- Commit state mutation
watch(path: string, callback: Function): Function
- Watch state changes
Events
state:changed
- Fired when state changesstate:error
- Fired on state error
EventManager
Handles event emission and handling throughout the application.
Methods
on(event: string, callback: Function, options?: Object): Function
-
Register event listener
EventManager.on('user:login', (event) => { console.log('User logged in:', event.user); }, { once: true });
emit(event: string, data?: Object): Promise<boolean>
- Emit event with optional data
off(event: string, callback: Function): boolean
- Remove event listener
TemplateManager
Manages template loading, processing, and caching.
Methods
loadFromServer(path: string): Promise<string>
- Load template from server
processTemplate(template: string, data: Object): string
-
Process template with data
const html = await TemplateManager.processTemplate( template, { user: { name: 'John' } } );
Events
template:loaded
- Fired when template is loadedtemplate:error
- Fired on template error
I18nManager
Handles internationalization and localization.
Methods
setLocale(locale: string): Promise<void>
- Set active locale
translate(key: string, params?: Object): string
-
Get translation for key
const message = I18nManager.translate('welcome', { name: user.name });
Events
locale:changed
- Fired when locale changes
ThemeManager
Manages application theming and dark mode.
Methods
setTheme(theme: string): Promise<void>
- Set active theme
toggleDarkMode(): void
- Toggle dark mode
Events
theme:changed
- Fired when theme changes
NotificationManager
Handles system notifications and alerts.
Methods
show(options: Object): string
- Show notification
success(message: string, options?: Object): string
-
Show success notification
NotificationManager.success('Profile updated!');
error(message: string, options?: Object): string
- Show error notification
ServiceWorkerManager
Handles PWA functionality and offline support.
Methods
register(): Promise<void>
- Register service worker
update(): Promise<void>
- Check for and apply updates
Events
sw:installed
- Fired when service worker is installedsw:updated
- Fired when update is available
Using Managers
Managers can be accessed through the Now.js framework instance
// Get manager instance
const router = Now.getManager('router');
// Use manager methods
router.navigate('/home');
// Listen to manager events
Now.getManager('event').on('route:after', (event) => {
console.log('Route changed:', event.path);
});
Best Practices
- Always check if manager exists before using
- Use proper error handling with try/catch
- Clean up event listeners when components unmount
- Use type checking when available
- Consider performance implications of manager operations
Error Handling
try {
const router = Now.getManager('router');
await router.navigate('/profile');
} catch (error) {
// Handle errors appropriately
console.error('Navigation failed:', error);
Now.getManager('notification').error('Failed to navigate');
}