javascript - 这 3 个 Angular2 命令导入什么?

标签 javascript angularjs angular angular2-providers

我正在使用 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/

相关文章:

Angular 2 - ngFor 中的动态 "for"属性

javascript - 使用 Django、CSS 和 Javascript 使 HTML 表单文本字段的存在依赖于复选框选择

javascript - json文件显示格式错误

javascript - 如何嵌套循环以循环遍历关联数组(JS)内的索引数组

javascript - 使用 Angular 生成动态引导菜单

Angular 2 innerHTML(点击)绑定(bind)

javascript - 如何在点击该点时获取折线点?

javascript - 组件的 Angular 2 指令覆盖 ng-content?

javascript - AngularJS http promise 触发 4 次

angular - Angular4 网站如何被谷歌收录?