2015-12-21 3 views
0

У меня есть проект с ASP.NET 5 и TypeScript. в основном это моя wwwroot папкаКак назвать именованный модуль из пакета

-wwwroot 
|-app 
||-person.js 
||-employee.js 
||-init.js 
|-js 
||-libraries.js // Contains: systemjs, ...etc 
||-app.bundle.js 

person.js является модуль ES6, который экспортирует class Person.

employee.js импорт person.js и экспорт class Employee.

init.js только импортирует employee.js, создает новый объект Employee и пускает его имя.

//init.js 
import { Employee } from "./employee"; 

var p = new Employee(); 
console.log(p.name); 

Теперь в комплекте три файла в app.bundle.js который находится в папке js с помощью systemjs-builder который произвел три названных System.register звонков:

System.register("wwwroot/app/person.js",... 
System.register("wwwroot/app/employee.js",... 
System.register("wwwroot/app/init.js"... 

На моем взгляде файл index.cshtml У меня есть эти теги сценария:

<script type="text/javascript" src="./js/libraries.js"></script> 

<!-- 2. Configure SystemJS --> 
<script type="text/javascript"> 
    System.config({ 
     packages: { 
      js: { 
       format: 'register', 
       defaultExtension: 'js' 
      } 
     } 
    }); 
    System.import('js/app.bundle') 
     .then(null, console.error.bind(console)); 
</script> 

очевидно, поскольку я назвал модули, что бы ни было в init.js не вызывается.

Так что мой вопрос: как я могу позвонить по названию System.register?

Примечание: я новичок в модулях es6, поэтому это тестовый проект, чтобы получить представление об этом.

ответ

0

С этой wiki page я решил свою проблему с этим:

<script type="text/javascript"> 
    System.config({ 
     bundles: { 
      'app.bundle.js': ['wwwroot/app/init'] 
     }, 
     packages: { 
      wwwroot: { 
       format: 'register', 
       defaultExtension: 'js' 
      } 
     } 
    }); 
    System.import('wwwroot/app/init') 
     .then(null, console.error.bind(console)); 
</script> 

Для объяснения:

Расширение пакет будет автоматически загружать пакет, как только попытка импортировать любой модуль в том, что комплект.

Так все, что мне нужно сделать, это сказать systemjs зарегистрировать init модуль в моей пачке, и она будет скачать пакет и выполнить все, что в init модуле.

Смежные вопросы