我正在使用 this sample app 在 ES6 JavaScript 中学习 Angular2 。具体来说,我试图从整个应用程序的根 JavaScript 文件开始绘制依赖关系链,即 boot.js 。 有人可以解释一下以下三行boot.js
到底导入了什么吗? 强>:
import { CORE_PROVIDERS } from './app/core';
import { AUTH_PROVIDERS } from './app/auth';
import { POSTS_PROVIDERS } from './app/posts';
当我导航到 './app/core'
时, './app/auth'
,和'./app/posts'
在上面的 GitHub 链接中的目录中,这些目录中有很多嵌套文件,我不清楚到底传递给三个 ..._PROVIDERS
的是什么。变量由上述三个命令。其他人可以解释一下吗?
boot.js
的完整代码是:
import './shim';
import 'rxjs/add/operator/map';
import { bootstrap } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { FORM_PROVIDERS, LocationStrategy, HashLocationStrategy } from '@angular/common';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from './app/core/components/app/app.component';
import { APP_ROUTES_PROVIDER } from './app/core/app.routes';
import { CORE_PROVIDERS } from './app/core';
import { AUTH_PROVIDERS } from './app/auth';
import { POSTS_PROVIDERS } from './app/posts';
if (ENVIRONMENT === 'production') {
enableProdMode();
}
bootstrap(AppComponent, [
FORM_PROVIDERS,
HTTP_PROVIDERS,
APP_ROUTES_PROVIDER,
AUTH_PROVIDERS,
POSTS_PROVIDERS,
CORE_PROVIDERS,
{ provide: LocationStrategy, useClass: HashLocationStrategy },
{ provide: 'ENVIRONMENT', useValue: ENVIRONMENT }
]);
最佳答案
当你有
import { Something } from './one/two';
它将查找由 two
文件夹中的 index
文件导出的 Something
标识符。
在您的情况下,当位于 /client/boot.js
的文件执行时
import { CORE_PROVIDERS } from './app/core';
import { AUTH_PROVIDERS } from './app/auth';
import { POSTS_PROVIDERS } from './app/posts';
第一个从 /client/app/core/index.js
查找导出的 CORE_PROVIDERS
标识符,which is :
import { LoggedInGuard } from './guards/logged-in.guard';
import { LoggedOutGuard } from './guards/logged-out.guard';
export const CORE_PROVIDERS = [LoggedInGuard, LoggedOutGuard];
正如您所看到的,它只是“重新导出”其他提供程序,这些提供程序本身存在于其他文件中。
第一个位于 /client/app/core/guards/logged-in.guard.js
等等。
顺便说一句,使用 index
文件是一种很好的做法,Create and Import Barrels 下的 Angular2 样式指南中也有建议。 .
关于javascript - 这 3 个 Angular2 命令导入什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536951/