-
Notifications
You must be signed in to change notification settings - Fork 25.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(core): extract platforms out of core
Currently, core depends on the browser, which means that other platforms (e.g., NativeScript or webworker) cannot use the bootstrapping logic core provides. This PR extract makes bootstrapping logic in core completely platform-independent. The browser-specific code was moved to "angular2/platforms/browser". BREAKING CHANGE A few private helpers (e.g., platformCommon or applicationCommon) were removed or replaced with other helpers. Look at PLATFORM_COMMON_PROVIDERS, APPLICATION_COMMON_PROVIDERS, BROWSER_PROVIDERS, BROWSER_APP_PROVIDERS to see if they export the providers you need. Closes #5219
- Loading branch information
Showing
38 changed files
with
451 additions
and
468 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
/** | ||
* This file is only used for dart applications and for internal examples | ||
* that compile with both JavaScript and Dart. | ||
* See {@link bootstrap} for more information. | ||
* @deprecated | ||
*/ | ||
export {bootstrap} from 'angular2/src/core/bootstrap'; | ||
export {bootstrap} from 'angular2/platform/browser'; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
/** | ||
* See {@link bootstrap} for more information. | ||
* @deprecated | ||
*/ | ||
export {bootstrapStatic} from 'angular2/platform/browser_static'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
export {BROWSER_PROVIDERS} from 'angular2/src/platform/browser_common'; | ||
|
||
import {Type, isPresent, CONST_EXPR} from 'angular2/src/facade/lang'; | ||
import {Promise} from 'angular2/src/facade/promise'; | ||
import { | ||
BROWSER_PROVIDERS, | ||
BROWSER_APP_COMMON_PROVIDERS, | ||
initBrowser | ||
} from 'angular2/src/platform/browser_common'; | ||
import {COMPILER_PROVIDERS} from 'angular2/compiler'; | ||
import {ComponentRef, platform, reflector} from 'angular2/core'; | ||
import {ReflectionCapabilities} from 'angular2/src/core/reflection/reflection_capabilities'; | ||
|
||
/** | ||
* An array of providers that should be passed into `application()` when bootstrapping a component. | ||
*/ | ||
export const BROWSER_APP_PROVIDERS: Array<any /*Type | Provider | any[]*/> = | ||
CONST_EXPR([BROWSER_APP_COMMON_PROVIDERS, COMPILER_PROVIDERS]); | ||
|
||
/** | ||
* Bootstrapping for Angular applications. | ||
* | ||
* You instantiate an Angular application by explicitly specifying a component to use | ||
* as the root component for your application via the `bootstrap()` method. | ||
* | ||
* ## Simple Example | ||
* | ||
* Assuming this `index.html`: | ||
* | ||
* ```html | ||
* <html> | ||
* <!-- load Angular script tags here. --> | ||
* <body> | ||
* <my-app>loading...</my-app> | ||
* </body> | ||
* </html> | ||
* ``` | ||
* | ||
* An application is bootstrapped inside an existing browser DOM, typically `index.html`. | ||
* Unlike Angular 1, Angular 2 does not compile/process providers in `index.html`. This is | ||
* mainly for security reasons, as well as architectural changes in Angular 2. This means | ||
* that `index.html` can safely be processed using server-side technologies such as | ||
* providers. Bindings can thus use double-curly `{{ syntax }}` without collision from | ||
* Angular 2 component double-curly `{{ syntax }}`. | ||
* | ||
* We can use this script code: | ||
* | ||
* ``` | ||
* @Component({ | ||
* selector: 'my-app', | ||
* template: 'Hello {{ name }}!' | ||
* }) | ||
* class MyApp { | ||
* name:string; | ||
* | ||
* constructor() { | ||
* this.name = 'World'; | ||
* } | ||
* } | ||
* | ||
* main() { | ||
* return bootstrap(MyApp); | ||
* } | ||
* ``` | ||
* | ||
* When the app developer invokes `bootstrap()` with the root component `MyApp` as its | ||
* argument, Angular performs the following tasks: | ||
* | ||
* 1. It uses the component's `selector` property to locate the DOM element which needs | ||
* to be upgraded into the angular component. | ||
* 2. It creates a new child injector (from the platform injector). Optionally, you can | ||
* also override the injector configuration for an app by invoking `bootstrap` with the | ||
* `componentInjectableBindings` argument. | ||
* 3. It creates a new `Zone` and connects it to the angular application's change detection | ||
* domain instance. | ||
* 4. It creates an emulated or shadow DOM on the selected component's host element and loads the | ||
* template into it. | ||
* 5. It instantiates the specified component. | ||
* 6. Finally, Angular performs change detection to apply the initial data providers for the | ||
* application. | ||
* | ||
* | ||
* ## Bootstrapping Multiple Applications | ||
* | ||
* When working within a browser window, there are many singleton resources: cookies, title, | ||
* location, and others. Angular services that represent these resources must likewise be | ||
* shared across all Angular applications that occupy the same browser window. For this | ||
* reason, Angular creates exactly one global platform object which stores all shared | ||
* services, and each angular application injector has the platform injector as its parent. | ||
* | ||
* Each application has its own private injector as well. When there are multiple | ||
* applications on a page, Angular treats each application injector's services as private | ||
* to that application. | ||
* | ||
* ## API | ||
* | ||
* - `appComponentType`: The root component which should act as the application. This is | ||
* a reference to a `Type` which is annotated with `@Component(...)`. | ||
* - `customProviders`: An additional set of providers that can be added to the | ||
* app injector to override default injection behavior. | ||
* | ||
* Returns a `Promise` of {@link ComponentRef}. | ||
*/ | ||
export function bootstrap( | ||
appComponentType: Type, | ||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ComponentRef> { | ||
reflector.reflectionCapabilities = new ReflectionCapabilities(); | ||
initBrowser(); | ||
|
||
let appProviders = | ||
isPresent(customProviders) ? [BROWSER_APP_PROVIDERS, customProviders] : BROWSER_APP_PROVIDERS; | ||
return platform(BROWSER_PROVIDERS).application(appProviders).bootstrap(appComponentType); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
export {BROWSER_PROVIDERS} from 'angular2/src/platform/browser_common'; | ||
|
||
import {Type, isPresent, CONST_EXPR} from 'angular2/src/facade/lang'; | ||
import {Promise} from 'angular2/src/facade/promise'; | ||
import { | ||
BROWSER_PROVIDERS, | ||
BROWSER_APP_COMMON_PROVIDERS, | ||
initBrowser | ||
} from 'angular2/src/platform/browser_common'; | ||
import {ComponentRef, platform, reflector} from 'angular2/core'; | ||
|
||
/** | ||
* An array of providers that should be passed into `application()` when bootstrapping a component | ||
* when all templates | ||
* have been precompiled offline. | ||
*/ | ||
export const BROWSER_APP_PROVIDERS: Array<any /*Type | Provider | any[]*/> = | ||
BROWSER_APP_COMMON_PROVIDERS; | ||
|
||
/** | ||
* See {@link bootstrap} for more information. | ||
*/ | ||
export function bootstrapStatic(appComponentType: Type, | ||
customProviders?: Array<any /*Type | Provider | any[]*/>, | ||
initReflector?: Function): Promise<ComponentRef> { | ||
initBrowser(); | ||
if (isPresent(initReflector)) { | ||
initReflector(); | ||
} | ||
|
||
let appProviders = | ||
isPresent(customProviders) ? [BROWSER_APP_PROVIDERS, customProviders] : BROWSER_APP_PROVIDERS; | ||
return platform(BROWSER_PROVIDERS).application(appProviders).bootstrap(appComponentType); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.