Spec-Zone.ru › Angular

downgradeModule

Вспомогательная функция для создания модуля AngularJS, который может инициализировать модуль Angular «по запросу» (возможно, с отложенной загрузкой), когда необходимо создать экземпляр downgraded component.

API

function downgradeModule<T>(
  moduleOrBootstrapFn:
    | Type<T>
    | ((extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>),
): string;
function downgradeModule<T>(moduleOrBootstrapFn: NgModuleFactory<T>): string;
function downgradeModule<T>(moduleOrBootstrapFn: Type<T> | ((extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>)): string;

Вспомогательная функция для создания модуля AngularJS, который может инициализировать модуль Angular «по запросу» (возможно, с отложенной загрузкой), когда необходимо создать экземпляр downgraded component.

Часть библиотеки upgrade/static для гибридных приложений с обновлением, поддерживающих компиляцию AOT.

Она позволяет отложенно загружать и инициализировать часть гибридного приложения на Angular, не оплачивая эти затраты заранее. Например, можно создать приложение AngularJS, использующее Angular для определённых маршрутов, и создавать экземпляры модулей Angular, только если пользователь посещает один из этих маршрутов.

Модуль Angular будет инициализирован один раз (при первом запросе), после чего будет использоваться та же ссылка на него.

downgradeModule() требуется либо NgModuleFactory, либо класс NgModule, либо функция:

  • NgModuleFactory: если передать NgModuleFactory, он будет использован для создания экземпляра модуля с помощью platformBrowser и метода bootstrapModuleFactory(). ПРИМЕЧАНИЕ: этот тип аргумента устарел. Вместо него передайте класс NgModule или функцию инициализации.
  • Класс NgModule: если передать класс NgModule, он будет использован для создания экземпляра модуля с помощью platformBrowser и метода bootstrapModule().
  • Function: если передать функцию, она должна возвращать промис, разрешающийся в NgModuleRef. Функция вызывается с массивом дополнительных Providers, доступных из Injector возвращённого NgModuleRef.

downgradeModule() возвращает имя созданного модуля-обёртки AngularJS. Его можно использовать, чтобы объявить зависимость в главном модуле AngularJS.

{@example upgrade/static/ts/lite/module.ts region="basic-how-to"}

Подробнее об использовании downgradeModule() см. в разделе Повышение производительности при обновлении.

@parammoduleOrBootstrapFnType<T> | ((extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>)
@returnsstring
Примечания по использованию

Помимо UpgradeModule, остальные вспомогательные функции upgrade/static можно использовать как обычно для создания гибридного приложения. Обратите внимание: части Angular (например, пониженные сервисы) будут недоступны, пока не будет инициализирован пониженный модуль, то есть до создания экземпляра пониженного компонента.

Нельзя использовать downgradeModule() и UpgradeModule в одном гибридном приложении.
Используйте только один из них.

Отличия от UpgradeModule

Помимо различий в API, между downgradeModule() и UpgradeModule есть два важных внутренних различия, влияющих на поведение гибридных приложений:

  1. В отличие от UpgradeModule, downgradeModule() не инициализирует главный модуль AngularJS внутри Angular zone.
  2. В отличие от UpgradeModule, downgradeModule() не запускает автоматически $digest() при обнаружении изменений в части приложения на Angular.

Это означает, что приложения, использующие UpgradeModule, чаще запускают обнаружение изменений, чтобы гарантировать, что оба фреймворка получат уведомления о возможных изменениях. Это неизбежно приводит к большему числу запусков обнаружения изменений, чем необходимо.

downgradeModule(), напротив, не пытается настолько тесно связывать две системы обнаружения изменений и ограничивает явные запуски обнаружения изменений только теми случаями, когда они заведомо необходимы (например, при изменении входных параметров пониженного компонента). Это повышает производительность, особенно в приложениях с интенсивным обнаружением изменений, но требует от разработчика вручную уведомлять каждый фреймворк по мере необходимости.

Подробнее об отличиях и их последствиях см. в разделе Повышение производительности при обновлении.

Вы можете вручную запустить обнаружение изменений в AngularJS с помощью scope.$apply(...) или $rootScope.$digest().

Вы можете вручную запустить обнаружение изменений в Angular с помощью * ngZone.run(...).

Понижение нескольких модулей

Можно понизить несколько модулей и включить их в приложение AngularJS. В этом случае каждый пониженный модуль будет инициализирован, когда потребуется создать экземпляр связанного с ним пониженного компонента или внедряемой зависимости.

При понижении нескольких модулей следует учитывать следующее:

  • Каждый пониженный компонент или внедряемая зависимость должны быть явно связаны с пониженным модулем. Подробнее см. в разделах downgradeComponent() и downgradeInjectable().

  • Если некоторые внедряемые зависимости должны быть общими для всех пониженных модулей, их можно передать как StaticProvider при создании PlatformRef (например, через platformBrowser или platformBrowserDynamic).

  • При использовании bootstrapModule() или bootstrapModuleFactory() для инициализации пониженных модулей каждый из них считается корневым модулем. В результате для каждой внедряемой зависимости, предоставляемой в "root" (через providedIn), будет создан новый экземпляр. Если это не входит в ваши намерения, можно создать общий модуль (который будет выполнять роль корневого модуля) и создавать все пониженные модули с помощью инжектора этого модуля:

    {@example upgrade/static/ts/lite-multi-shared/module.ts region="shared-root-module"}

function downgradeModule<T>(moduleOrBootstrapFn: NgModuleFactory<T>): string;

Вспомогательная функция для создания модуля AngularJS, который может запускать модуль Angular «по требованию» (возможно, отложенно), когда необходимо создать downgraded component.

Часть библиотеки upgrade/static для гибридных приложений обновления, поддерживающих AOT-компиляцию.

Она позволяет отложенно загружать и запускать часть приложения на Angular, не оплачивая эти затраты заранее. Например, можно создать приложение AngularJS, использующее Angular для определённых маршрутов, и создавать модули Angular только тогда, когда пользователь переходит по одному из этих маршрутов.

Модуль Angular будет запущен один раз (при первом обращении), и далее будет использоваться та же ссылка на него.

downgradeModule() требует либо NgModuleFactory, либо класс NgModule, либо функцию:

  • NgModuleFactory: Если передать NgModuleFactory, он будет использоваться для создания экземпляра модуля с помощью platformBrowser и его bootstrapModuleFactory(). ПРИМЕЧАНИЕ: этот тип аргумента устарел. Вместо него передайте класс NgModule или функцию запуска.
  • Класс NgModule: Если передать класс NgModule, он будет использоваться для создания экземпляра модуля с помощью platformBrowser и его bootstrapModule().
  • Function: Если передать функцию, она должна возвращать промис, разрешающийся в NgModuleRef. Функция вызывается с массивом дополнительных Providers, которые должны быть доступны в Injector возвращённого NgModuleRef.

downgradeModule() возвращает имя созданного модуля-обёртки AngularJS. Его можно использовать для объявления зависимости в главном модуле AngularJS.

{@example upgrade/static/ts/lite/module.ts region="basic-how-to"}

Подробнее об использовании downgradeModule() см. в разделе Повышение производительности.

@deprecated

Передача NgModuleFactory в качестве аргумента функции downgradeModule устарела; вместо этого передайте ссылку на класс NgModule.

@parammoduleOrBootstrapFnNgModuleFactory<T>
@returnsstring
Примечания по использованию

Помимо UpgradeModule, остальные вспомогательные средства upgrade/static можно использовать как обычно для создания гибридного приложения. Обратите внимание, что компоненты Angular (например, пониженные сервисы) будут недоступны, пока не будет запущен пониженный модуль, то есть пока не будет создан пониженный компонент.

Нельзя использовать downgradeModule() и UpgradeModule в одном гибридном приложении.
Используйте что-то одно.

Отличия от UpgradeModule

Помимо различий в API, между downgradeModule() и UpgradeModule есть два важных внутренних различия, влияющих на поведение гибридных приложений:

  1. В отличие от UpgradeModule, downgradeModule() не запускает главный модуль AngularJS внутри Angular zone.
  2. В отличие от UpgradeModule, downgradeModule() не запускает автоматически $digest() при обнаружении изменений в части приложения на Angular.

Это означает, что приложения, использующие UpgradeModule, чаще запускают обнаружение изменений, чтобы оба фреймворка своевременно получали уведомления о возможных изменениях. В результате обнаружение изменений неизбежно будет запускаться чаще, чем необходимо.

downgradeModule(), напротив, не пытается настолько тесно связывать две системы обнаружения изменений и ограничивает явные запуски обнаружения изменений только теми случаями, когда они необходимы (например, при изменении входных данных пониженного компонента). Это повышает производительность, особенно в приложениях с частым обнаружением изменений, но возлагает на разработчика обязанность вручную уведомлять каждый фреймворк по мере необходимости.

Подробнее об отличиях и их последствиях см. в разделе Повышение производительности.

Обнаружение изменений в AngularJS можно запустить вручную с помощью scope.$apply(...) или $rootScope.$digest().

Обнаружение изменений в Angular можно запустить вручную с помощью * ngZone.run(...).

Понижение нескольких модулей

Можно понизить несколько модулей и включить их в приложение AngularJS. В этом случае каждый пониженный модуль будет запущен, когда потребуется создать связанный с ним пониженный компонент или внедряемую зависимость.

При понижении нескольких модулей следует учитывать следующее:

  • Каждый пониженный компонент или внедряемая зависимость должен быть явно связан с пониженным модулем. Подробнее см. в разделах downgradeComponent() и downgradeInjectable().

  • Чтобы некоторые внедряемые зависимости были общими для всех пониженных модулей, их можно передать как StaticProvider при создании PlatformRef (например, через platformBrowser или platformBrowserDynamic).

  • При использовании bootstrapModule() или bootstrapModuleFactory() для запуска пониженных модулей каждый из них считается корневым модулем. В результате для каждой внедряемой зависимости, предоставленной в "root" (через providedIn, будет создан новый экземпляр. Если это не соответствует вашим намерениям, можно создать общий модуль (который будет выступать в роли корневого модуля) и создавать все пониженные модули с помощью инжектора этого модуля:

    {@example upgrade/static/ts/lite-multi-shared/module.ts region="shared-root-module"}

Описание

Вспомогательная функция для создания модуля AngularJS, который может запускать модуль Angular «по требованию» (возможно, отложенно), когда необходимо создать downgraded component.

Часть библиотеки upgrade/static для гибридных приложений обновления, поддерживающих AOT-компиляцию.

Она позволяет отложенно загружать и запускать часть приложения на Angular, не оплачивая эти затраты заранее. Например, можно создать приложение AngularJS, использующее Angular для определённых маршрутов, и создавать модули Angular только тогда, когда пользователь переходит по одному из этих маршрутов.

Модуль Angular будет запущен один раз (при первом обращении), и далее будет использоваться та же ссылка на него.

downgradeModule() требует либо NgModuleFactory, либо класс NgModule, либо функцию:

  • NgModuleFactory: Если передать NgModuleFactory, он будет использоваться для создания экземпляра модуля с помощью platformBrowser и его bootstrapModuleFactory(). ПРИМЕЧАНИЕ: этот тип аргумента устарел. Вместо него передайте класс NgModule или функцию запуска.
  • Класс NgModule: Если передать класс NgModule, он будет использоваться для создания экземпляра модуля с помощью platformBrowser и его bootstrapModule().
  • Function: Если передать функцию, она должна возвращать промис, разрешающийся в NgModuleRef. Функция вызывается с массивом дополнительных Providers, которые должны быть доступны в Injector возвращённого NgModuleRef.

downgradeModule() возвращает имя созданного модуля-обёртки AngularJS. Его можно использовать для объявления зависимости в главном модуле AngularJS.

import {BrowserModule, platformBrowser} from '@angular/platform-browser';
import {downgradeComponent, downgradeModule, UpgradeComponent} from '@angular/upgrade/static';

// The function that will bootstrap the Angular module (when/if necessary).
// (This would be omitted if we provided an `NgModuleFactory` directly.)
const ng2BootstrapFn = (extraProviders: StaticProvider[]) =>
  platformBrowser(extraProviders).bootstrapModule(MyLazyAngularModule);
// This AngularJS module represents the AngularJS pieces of the application.
const myMainAngularJsModule = angular.module('myMainAngularJsModule', [
  // We declare a dependency on the "downgraded" Angular module.
  downgradeModule(ng2BootstrapFn),
  // or
  // downgradeModule(MyLazyAngularModuleFactory)
]);

Подробнее об использовании downgradeModule() см. в разделе Повышение производительности.

Примечания по использованию

Помимо UpgradeModule, остальные вспомогательные средства upgrade/static можно использовать как обычно для создания гибридного приложения. Обратите внимание, что компоненты Angular (например, пониженные сервисы) будут доступны только после загрузки пониженного модуля, то есть после создания экземпляра пониженного компонента.

Нельзя использовать downgradeModule() и UpgradeModule в одном гибридном приложении.
Используйте что-то одно.

Отличия от UpgradeModule

Помимо различий в API, между downgradeModule() и UpgradeModule есть два важных внутренних различия, влияющих на поведение гибридных приложений:

  1. В отличие от UpgradeModule, downgradeModule() не загружает основной модуль AngularJS внутри Angular zone.
  2. В отличие от UpgradeModule, downgradeModule() не запускает автоматически $digest() при обнаружении изменений в части приложения, написанной на Angular.

Это означает, что приложения, использующие UpgradeModule, будут чаще запускать обнаружение изменений, чтобы гарантировать надлежащее уведомление обеих платформ о возможных изменениях. В результате обнаружение изменений неизбежно будет запускаться чаще, чем необходимо.

downgradeModule(), напротив, не пытается так тесно связывать две системы обнаружения изменений, ограничивая явные запуски обнаружения изменений только случаями, когда они заведомо необходимы (например, при изменении входных данных пониженного компонента). Это повышает производительность, особенно в приложениях с интенсивным обнаружением изменений, но разработчику необходимо самостоятельно уведомлять каждую платформу по мере необходимости.

Более подробное обсуждение различий и их последствий см. в разделе Повышение производительности при обновлении.

Обнаружение изменений в AngularJS можно запустить вручную с помощью scope.$apply(...) или $rootScope.$digest().

Обнаружение изменений в Angular можно запустить вручную с помощью * ngZone.run(...).

Понижение нескольких модулей

Можно понизить несколько модулей и включить их в приложение AngularJS. В этом случае каждый пониженный модуль будет загружен, когда потребуется создать экземпляр связанного с ним пониженного компонента или внедряемого объекта.

При понижении нескольких модулей следует учитывать следующее:

  • Каждый пониженный компонент или внедряемый объект необходимо явно связать с пониженным модулем. Подробнее см. в разделах downgradeComponent() и downgradeInjectable().

  • Если некоторые внедряемые объекты должны быть общими для всех пониженных модулей, их можно передать как StaticProvider при создании PlatformRef (например, через platformBrowser или platformBrowserDynamic).

  • При использовании bootstrapModule() или bootstrapModuleFactory() для загрузки пониженных модулей каждый из них считается корневым модулем. В результате для каждого внедряемого объекта, предоставляемого в "root" (через providedIn), будет создан новый экземпляр. Если это не соответствует вашим намерениям, можно создать общий модуль (который будет выступать в качестве корневого) и создавать все пониженные модули с помощью его инжектора:

let rootInjectorPromise: Promise<Injector> | null = null;
const getRootInjector = (extraProviders: StaticProvider[]) => {
  if (!rootInjectorPromise) {
    rootInjectorPromise = platformBrowser(extraProviders)
      .bootstrapModule(Ng2RootModule)
      .then((moduleRef) => moduleRef.injector);
  }
  return rootInjectorPromise;
};

const downgradedNg2AModule = downgradeModule(async (extraProviders: StaticProvider[]) => {
  const rootInjector = await getRootInjector(extraProviders)!;
  const moduleAFactory = await rootInjector.get(Compiler).compileModuleAsync(Ng2AModule);
  return moduleAFactory.create(rootInjector);
});
const downgradedNg2BModule = downgradeModule(async (extraProviders: StaticProvider[]) => {
  const rootInjector = await getRootInjector(extraProviders)!;
  const moduleBFactory = await rootInjector.get(Compiler).compileModuleAsync(Ng2BModule);
  return moduleBFactory.create(rootInjector);
});
const appModule = angular
  .module('exampleAppModule', [downgradedNg2AModule, downgradedNg2BModule, downgradedNg2CModule])

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/upgrade/static/downgradeModule

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API