如何在 angular2 应用程序中包含 zone.js?

How do I include zone.js in an angular2 app?

我不使用 webpack 或 browserify。我使用 systemjs 加载模块。我的 ASP.NET 核心和 Angular2 应用程序中有以下配置。

  1. 我是否应该通过脚本标记在应用程序中全局加载 zone.js 如下所示?
  2. 或者我应该像加载 rzjs 一样通过 SystemJS 加载它吗?
  3. 或者我是否应该将 zone.js 部署到 @angular 文件夹下,它应该无需任何配置就可以工作?

<environment names="Development"> <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.41/system.js"></script> <script src="~/lib/reflect-metadata/reflect.js"></script> <script src="~/lib/zone.js/dist/zone.js"></script> <script src="~/lib/jquery/dist/jquery.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script> <script> window.onload = () => { System.defaultJSExtensions = true; System.config({ map: { 'rxjs': "../../lib/rxjs/bundles/rx.js", '@@angular/core': '../../lib/@@angular/core/bundles/core.umd.js', '@@angular/common': '../../lib/@@angular/common/bundles/common.umd.js', '@@angular/compiler': '../../lib/@@angular/compiler/bundles/compiler.umd.js', '@@angular/platform-browser': '../../lib/@@angular/platform-browser/bundles/platform-browser.umd.js', '@@angular/platform-browser-dynamic': '../../lib/@@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', '@@angular/http': '../../lib/@@angular/http/bundles/http.umd.js', '@@angular/router': '../../lib/@@angular/router/bundles/router.umd.js', '@@angular/forms': '../../lib/@@angular/forms/bundles/forms.umd.js', } }); System.import("../myapp/app.js"); } </script> </environment>

答案是(1)"Load zone.js globally in the app through script tag"。 Zone.js 执行拦截浏览器中所有异步 API 的关键任务,以创建 Angular 变更检测所需的唯一执行上下文。它应该在模块加载器开始引导 angular 应用程序之前被包含。