@ssv/aspnet-prerendering
Version:
aspnet SPA Services Node prerendering ESM compatible.
69 lines (46 loc) • 2.04 kB
Markdown
[//github.com/sketch7/aspnet-prerendering
[ ]: ./CHANGELOG.md
[ ]: ./docs/DEVELOPMENT-WORKFLOW.md
[ ]: ./docs/API.md
[ ]: https://www.npmjs.com/package/@ssv/aspnet-prerendering
[](https://github.com/sketch7/aspnet-prerendering/actions/workflows/ci.yml)
[](https://badge.fury.io/js/%40ssv%2Faspnet-prerendering)
Port of [aspnet-prerendering](https://github.com/aspnet/JavaScriptServices/blob/master/src/Microsoft.AspNetCore.SpaServices/npm/aspnet-prerendering/package.json) which supports ESM.
This allows using vite/esbuild angular (was tested only with angular - `@angular-devkit/build-angular:application`)
**Quick links**
[Change logs][changeLog] | [Project Repository][projectUri]
## Installation
Get library via [npm]
```bash
npm install @ssv/aspnet-prerendering
```
## Usage
```ts
import { renderModule } from "@angular/platform-server";
import { APP_BASE_HREF } from "@angular/common";
// import { createServerRenderer } from "aspnet-prerendering";
import { createServerRenderer } from "@ssv/aspnet-prerendering";
import { AppServerModule } from "./app/app.server.module";
interface TransferData {
originalHtml: string;
startupContext: StartupContext; // custom
request: any;
}
export default createServerRenderer(params => {
const { startupContext, originalHtml } = params.data as TransferData;
const extraProviders = [
{ provide: APP_BASE_HREF, useValue: startupContext.virtualPath },
{ provide: "BASE_URL", useValue: params.origin + params.baseUrl },
];
const options = {
document: originalHtml,
url: params.url,
extraProviders
};
const renderPromise = renderModule(AppServerModule, options);
return renderPromise.then(html => ({ html }));
});
```
Check out the [development guide][developmentWorkflowWiki].
]: https: