Solveduniversal update to rc5/rc6/rc7

rc6/rc7 update

  • create NodeDomEventsPlugin from DomEventsPlugin
  • create NodeEventManager from NodeEventManager
  • recreate DomRenderer for NodeDomRenderer
  • recreate SharedStylesHost for NodeSharedStylesHost
  • recreate Parse5DomAdapter with parse5 2.x.x
  • fix the events that were coupled to Parse5DomAdapter and one document
  • making sure the pipeline is as fast as possible outside of the angular's internal bootstrap
  • decouple the universal rendering pipeline for scheduling
  • inject latest version of preboot
  • create a way to dehydrate data from server to client via UNIVERSAL_CACHE
  • allow APP_ID to be passed to client to reuse styles
  • include lifecycle hooks for NodePlatform
    • universalOnInit
    • universalDoCheck
    • universalOnStable
    • universalDoDehydrate
    • universalAfterDehydrate
    • universalOnRendered
  • move most NodePlatform logic to UniversalPlatform
  • reuse NodeModule as UniversalModule
  • create initial UniversalPlatform
  • initial UniversalModule for browser
  • UniversalModule for Browser
    • create lifecycle hooks
    • link APP_ID to reuse styles
    • link preboot
    • link http resources made from the server to the client for prime cache mode
    • link hydrate resources
  • recreate integrations
    • angular2-express-engine
    • angular2-hapi-engine
    • angular2-webpack-prerender
    • angular2-gulp-prerender
    • angular2-grunt-prerender
  • fix publishing packages
  • use Zone.js for context config

after initial release

  • allow canceling requests
  • include fixed preboot version
    • auto include appRoots
    • inject at last entryComponent
  • perf tests
  • recreate Bootloader as Universal to manage concurrent apps and app lifecycles with middleware
  • move most serialize logic from NodePlatform to Universal
  • update integrations with full app with routes prerendering support
  • write about auth management
  • write about state/resource/cache management server/client/both
  • write about pm2 and cluster management
  • write about best practices
  • get AoT compiler working
  • patch zone.js for http/https WIP angular/zone.js#430
  • patch zone.js for fs angular/zone.js#438
  • update universal services design

experimental

  • include a webpack universal-loader for prerendering
  • create new universal prerender solution
  • section off pages for prerender and rerender for fastest server rendering solution
41 Answers

✔️Accepted Answer

@gdi2290: Any estimate on when @angular/universal will be published?

Other Answers:

Sorry for the delay again I'll try to be a bit more transparent. I decided to update universal to rc6 which pushed back Universal that was in the middle of being updated to rc5. rc6 required Universal to recreate a lot of internal services that I was reused since the internal angular APIs kept changing. I also determined that there also needs to be a UniversalModule for the browser that now needs to be designed. UniversalModule is needed to seamlessly transition between Node and the Browser.

*/\ list moved to the original post /*
#511 (comment)

I'm shooting for Friday

@gdi2290 : Do you have any idea when the new version of Angular universal supporting rc5 would be released ?

it's updated in the example folder for rc5 and rc6. The universal module has been rebuilt from the ground up. The only things left are rearranging the repo with it, making the new API work with the old API, and then publishing it
https://github.com/angular/universal/blob/master/examples/next-hello-world/src/main.node.ts

import { NgModule, Component, Injectable } from '@angular/core';
import {
  NodeModule,
  NodeHttpModule,
  NodeJsonpModule,
  platformDynamicNode, // might be renamed to platformDynamicUniversal
} from '@angular/universal';

import { App } from './app';


@Component({
  selector: 'another-component',
  template: 'SERVER-RENDERED'
})
class AnotherComponent {}

export const platform = platformDynamicNode();

export function main(document, config?: any) {

  @NgModule({
    bootstrap: [ App, AnotherComponent ],
    declarations: [ App, AnotherComponent ],
    imports: [
      NodeModule.withConfig({
        document: document,
        originUrl: 'http://localhost:3000',
        baseUrl: '/',
        requestUrl: '/',
        preboot: {
          appRoot: ['app'],
          uglify: true
        },
      }),
      NodeHttpModule,
      NodeJsonpModule
    ]
  })
  class MainModule {
    ngOnInit() {
      console.log('ngOnInit');
    }
    // ngDoCheck() {
    //   console.log('ngDoCheck');
    //   return true;
    // }
    ngOnStable() {
      console.log('ngOnStable');
    }
    ngOnRendered() {
      console.log('ngOnRendered');
    }
  }

  return platform
    .serializeModule(MainModule, config)
    .then((html) => {
      console.log('done');
      return html
    });
};

Related Issues:

42
universal update to rc5/rc6/rc7
@gdi2290: Any estimate on when @angular/universal will be published? rc6/rc7 update create NodeDomEv...
11
universal List browser global that we need to support in Universal
Also Angular 2 Material The next version of Universal can support/mock any browser global so please ...