2016-07-21 136 views
0

我有使用快速启动从angular.io的角2应用进行的,我使用SystemJs的加载模块(见QuickStart guide),我有以下问题:角2模块加载,进口

  1. import { Component} from '@angular/core'; 什么这种说法在做什么?是加载@ angular/core还是只加载@ angular/core的组件? @ angular/core如何在这里加载,因为我没有包含以任何方式加载角的脚本标记?
  2. 在Angular 2中systemJs的用途是什么?
  3. 我的es6代码如何转换为es5?
  4. systemJs是否也捆绑了所有js文件?或者每个角度模块通过ajax加载?
+0

你是什么意思3.我假设你不想要一个完整的解释如何从一种语言翻译成另一种工作。 –

+0

编号不完整的解释。快速入门是如何发生的?通过systemjs或任何其他库?它是自动发生还是我将不得不明确地进行传译? – user1502901

回答

0
  1. 这实际上并没有太大的作用。它只在当前文件中知道Component,并指向Component的声明位置。
0

1:从文件路径@angular/core:这是导入组件类到当前文件

2:系统JS是它加载更多捆绑他们

如果所有的JavaScript模块一个模块加载器您在package.json文件中检查了angular2的相关性 您会发现@angular/core路径是依赖项。所以@角/芯内的组件类的定义:

声明import {Component} from @angular/core说:遵循的路径,@angular/core,使Component类可用于当前文件

+0

它是如何加载@ angular/core来找到它的路径导入Componenet? – user1502901

1

为什么不看看是可以获得的javascript从打字稿中翻译出来?

  1. import'Component'from'@ angular/core';

做两件事情:如果你在打字稿中有commonjs作为模板格式,则转换为require调用。

var core_1 = require('@angular/core'); 

core_1.Component({}) 

其次,它告诉编译器在@ angular/core中查找Component类的类型。默认情况下,在node_modules文件夹中查找导入中的所有非相对路径。因此,它会看:

node_modules/@angular/core/index.d.ts为@角/芯

  • SystemJs被用作在运行时模块加载程序。浏览器在生产中只看到了转译的javascript。所以它必须知道,在哪里寻找依赖关系,这是在systemjs.config.js中定义的。
  • 其中@ angular/core的软件包被定义为默认查找node_modules。在这里,您还可以定义从CDN加载依赖项,并且node_modules中的版本仅用于将Typescript编译为Javascript。

    1. Typescript编译器执行从ES6到ES5的转换。请参阅打字稿配置:tsconfig.json

    2. SystemJs没有进行捆绑,它实际上可以加载捆绑。捆绑您的JavaScript需要在持续集成中完成,例如通过咕噜声或吞咽。