Code Monkey home page Code Monkey logo

ng-prerender's Introduction

ng-prerender

What if pre-rendering an Angular application wasn't difficult and didnt require multiple builds? ng-prerender uses @nguniversal/common/clover under the hood to just make it simple.

Documentation

Installation

npm install @nguniversal/common ng-prerender

Setup application modules

app/app.module.ts (NgModules)

  import { NgModule } from '@angular/core';
  import { BrowserModule } from '@angular/platform-browser';

  import { AppComponent } from './app.component';
+ import { RendererModule, TransferHttpCacheModule } from '@nguniversal/common/clover';

  @NgModule({
    declarations: [AppComponent],
    imports: [
-     BrowserModule,
+     BrowserModule.withServerTransition({
+      appId: 'myapp',
+     }),
+     RendererModule.forRoot(),
+     TransferHttpCacheModule,
    ],
    bootstrap: [AppComponent]
  })
  export class AppModule { }

main.ts (Standalone Components)

  import { bootstrapApplication, BrowserModule } from '@angular/platform-browser';
  import { importProvidersFrom } from '@angular/core';
+ import {
+  RendererModule,
+  TransferHttpCacheModule,
+ } from '@nguniversal/common/clover';

  import { AppComponent } from './app/app.component';

  bootstrapApplication(AppComponent, {
    providers: [
-     importProvidersFrom(BrowserModule),
+     importProvidersFrom(BrowserModule.withServerTransition({ appId: 'app' })),
+     importProvidersFrom(RendererModule.forRoot()),
+     importProvidersFrom(TransferHttpCacheModule),
    ],
  }).catch((err) => console.error(err));

CLI Usage

package.json

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
+   "prerender": "npm run build && ng-prerender [dist] [path-one] [path-two] [path-three] ..."
  },

API Useage

scripts/prerender.mjs

+ import { prerender } from 'ng-prerender';

+ const routes = [''];

+ await prerender('dist/app', routes);

package.json

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
+   "prerender": "npm run build && node scripts/prerender.mjs"
  },

ng-prerender's People

Contributors

dependabot[bot] avatar dominicegginton avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.