refactor(core): clean up platform bootstrap and initTestEnvironment
- Introduces `CompilerFactory` which can be part of a `PlatformRef`. - Introduces `WorkerAppModule`, `WorkerUiModule`, `ServerModule` - Introduces `serverDynamicPlatform` for applications using runtime compilation on the server. - Changes browser bootstrap for runtime and offline compilation (see below for an example). * introduces `bootstrapModule` and `bootstrapModuleFactory` in `@angular/core` * introduces new `browserDynamicPlatform` in `@angular/platform-browser-dynamic - Changes `initTestEnvironment` (which used to be `setBaseTestProviders`) to not take a compiler factory any more (see below for an example). BREAKING CHANGE: ## Migration from `setBaseTestProviders` to `initTestEnvironment`: - For the browser platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS} from ‘@angular/platform-browser-dynamic/testing’; setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); ``` AFTER: ``` import {initTestEnvironment} from ‘@angular/core/testing’; import {browserDynamicTestPlatform, BrowserDynamicTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( BrowserDynamicTestModule, browserDynamicTestPlatform()); ``` - For the server platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS} from ‘@angular/platform-server/testing/server’; setBaseTestProviders(TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS); ``` AFTER: ``` import {initTestEnvironment} from ‘@angular/core/testing’; import {serverTestPlatform, ServerTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( ServerTestModule, serverTestPlatform()); ``` ## Bootstrap changes ``` @AppModule({ modules: [BrowserModule], precompile: [MainComponent], providers: […], // additional providers directives: […], // additional platform directives pipes: […] // additional platform pipes }) class MyModule { constructor(appRef: ApplicationRef) { appRef.bootstrap(MainComponent); } } // offline compile import {browserPlatform} from ‘@angular/platform-browser’; import {bootstrapModuleFactory} from ‘@angular/core’; bootstrapModuleFactory(MyModuleNgFactory, browserPlatform()); // runtime compile long form import {browserDynamicPlatform} from ‘@angular/platform-browser-dynamic’; import {bootstrapModule} from ‘@angular/core’; bootstrapModule(MyModule, browserDynamicPlatform()); ``` Closes #9922 Part of #9726
This commit is contained in:
25
tools/public_api_guard/core/index.d.ts
vendored
25
tools/public_api_guard/core/index.d.ts
vendored
@ -256,6 +256,12 @@ export declare class Binding extends Provider {
|
||||
});
|
||||
}
|
||||
|
||||
/** @stable */
|
||||
export declare function bootstrapModule<M>(moduleType: ConcreteType<M>, platform: PlatformRef, compilerOptions?: CompilerOptions): Promise<AppModuleRef<M>>;
|
||||
|
||||
/** @experimental */
|
||||
export declare function bootstrapModuleFactory<M>(moduleFactory: AppModuleFactory<M>, platform: PlatformRef): AppModuleRef<M>;
|
||||
|
||||
/** @stable */
|
||||
export declare enum ChangeDetectionStrategy {
|
||||
OnPush = 0,
|
||||
@ -302,6 +308,22 @@ export declare class Compiler {
|
||||
compileComponentSync<T>(component: ConcreteType<T>): ComponentFactory<T>;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare abstract class CompilerFactory {
|
||||
abstract createCompiler(options?: CompilerOptions): Compiler;
|
||||
withDefaults(options?: CompilerOptions): CompilerFactory;
|
||||
static mergeOptions(defaultOptions?: CompilerOptions, newOptions?: CompilerOptions): CompilerOptions;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare type CompilerOptions = {
|
||||
useDebug?: boolean;
|
||||
useJit?: boolean;
|
||||
defaultEncapsulation?: ViewEncapsulation;
|
||||
providers?: any[];
|
||||
deprecatedAppProviders?: any[];
|
||||
};
|
||||
|
||||
/** @stable */
|
||||
export declare var Component: ComponentMetadataFactory;
|
||||
|
||||
@ -513,6 +535,9 @@ export declare function coreLoadAndBootstrap(componentType: Type, injector: Inje
|
||||
/** @experimental */
|
||||
export declare function createPlatform(injector: Injector): PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare function createPlatformFactory(name: string, providers: any[]): () => PlatformRef;
|
||||
|
||||
/** @stable */
|
||||
export declare class CyclicDependencyError extends AbstractProviderError {
|
||||
constructor(injector: ReflectiveInjector, key: ReflectiveKey);
|
||||
|
9
tools/public_api_guard/core/testing.d.ts
vendored
9
tools/public_api_guard/core/testing.d.ts
vendored
@ -83,7 +83,7 @@ export declare function getTestInjector(): TestInjector;
|
||||
export declare var iit: any;
|
||||
|
||||
/** @experimental */
|
||||
export declare function initTestEnvironment(compilerFactory: TestCompilerFactory, platform: PlatformRef, appModule: Type): void;
|
||||
export declare function initTestEnvironment(appModule: Type, platform: PlatformRef): void;
|
||||
|
||||
/** @stable */
|
||||
export declare function inject(tokens: any[], fn: Function): () => any;
|
||||
@ -106,12 +106,6 @@ export declare var it: any;
|
||||
/** @experimental */
|
||||
export declare function resetTestEnvironment(): void;
|
||||
|
||||
/** @experimental */
|
||||
export declare type TestCompilerFactory = (config: {
|
||||
providers?: Array<Type | Provider | any[]>;
|
||||
useJit?: boolean;
|
||||
}) => Compiler;
|
||||
|
||||
/** @stable */
|
||||
export declare class TestComponentBuilder {
|
||||
protected _injector: Injector;
|
||||
@ -136,7 +130,6 @@ export declare class TestComponentRenderer {
|
||||
/** @experimental */
|
||||
export declare class TestInjector implements Injector {
|
||||
appModule: Type;
|
||||
compilerFactory: TestCompilerFactory;
|
||||
platform: PlatformRef;
|
||||
configureCompiler(config: {
|
||||
providers?: any[];
|
||||
|
Reference in New Issue
Block a user