Routing
micro-lc API offers a set of facilities for routing between sub-applications. Some methods are proxies of the document window, offered to centralize the routing experience, while other are based on internal logic.
goTo
export interface MicrolcApi {
router: {
goTo: (url: string | URL | undefined) => void
// ...rest of the API
}
// ...rest of the API
}
goTo can be used to route the application to a specific URL. The behaviour of the method changes based on the
relation between the curren URL and the given URL.
If the new URL has a different origin than the current
URL, goTo behaves as a window.open with target _self.
If the new URL has same origin and same pathname
as the current URL, goTo behaves as a history.replaceState
(useful, for example, if you just need to change query parameters).
Finally, if the new URL has same origin and different pathname than the current URL, goTo behaves as a
history.pushState.
Using this API does not ensure that the url is changed after the unmount of the current
application, if any. To achieve that use goToApplication
goToApplication
export interface MicrolcApi {
router: {
goToApplication<S = unknown>(id: string, data?: S): Promise<void>
// ...rest of the API
}
// ...rest of the API
}
goToApplication is the primary method for moving across applications in micro-lc. Instead of
requiring the next url, it expects the id of the application that needs to be mounted next. The application
must be available in the configuration field applications.
The API then proceeds to:
unmountthe currently mounted application, if any- retrieve the next url from the application
id - call such url via
history.pushStateto update the browser mountthe application with the givenid
If provided id does not match any registered application, goToApplication will route to 404
error page.
goToErrorPage
export interface MicrolcApi {
router: {
goToErrorPage(statusCode?: number, reason?: string): void
// ...rest of the API
}
// ...rest of the API
}
goToErrorPage can be used to programmatically route to an error page.
Argument statusCode is the error number (defaults to 404), and reason is the cause of the error.
If provided statusCode does not match any registered error page, goToErrorPage will throw an error.
open
export interface MicrolcApi {
router: {
open: (url?: string | URL, target?: string, features?: string) => Window | null
// ...rest of the API
}
// ...rest of the API
}
open mirrors the browser native API.
pushState
export interface MicrolcApi {
router: {
pushState: (data: any, unused: string, url?: string | URL | null) => void
// ...rest of the API
}
// ...rest of the API
}
pushState mirrors the browser native API.
replaceState
export interface MicrolcApi {
router: {
replaceState: (data: any, unused: string, url?: string | URL | null) => void
// ...rest of the API
}
// ...rest of the API
}
replaceState mirrors the browser native API.