如何在 angular2 应用程序中包含 zone.js?
How do I include zone.js in an angular2 app?
我不使用 webpack 或 browserify。我使用 systemjs 加载模块。我的 ASP.NET 核心和 Angular2 应用程序中有以下配置。
- 我是否应该通过脚本标记在应用程序中全局加载 zone.js
如下所示?
- 或者我应该像加载 rzjs 一样通过 SystemJS 加载它吗?
- 或者我是否应该将 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 应用程序之前被包含。
我不使用 webpack 或 browserify。我使用 systemjs 加载模块。我的 ASP.NET 核心和 Angular2 应用程序中有以下配置。
- 我是否应该通过脚本标记在应用程序中全局加载 zone.js 如下所示?
- 或者我应该像加载 rzjs 一样通过 SystemJS 加载它吗?
- 或者我是否应该将 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 应用程序之前被包含。