Angular2, SystemJS пути для компонентов bower
Я создал пример приложения Angular2, где один из моих модулей использует внешнюю библиотеку (rest), например:
/// <reference path="../../typings/tsd.d.ts" />
import rest = require('rest');
import jsonpClient = require('rest/client/jsonp');
import mime = require('rest/interceptor/mime');
...
Я использовал
tsd install rest
Которые разместили остальные.d. ts в справочнике "typings", и использовали
bower install rest
Чтобы получить версию среды выполнения (это нигде не объяснялось. Я предполагаю, что должен сделать что-то подобное? )
Я создал мой сценарий залпом, чтобы скопировать две папки из bower_components ("отдых" и его зависимостей "когда") в dist / lib
Само приложение прекрасно компилируется, но в браузере оно не может разрешить зависимости модулей rest/when.
Я добавил
System.config({
"baseURL": "/",
"transpiler": "traceur",
"paths": {
"components/*": "components/*.js",
"provider/*": "provider/*.js",
"services/*": "services/*.js",
"model/*": "model/*.js",
"rest": "lib/rest/rest.js",
"rest/*": "lib/rest/*.js",
"when": "lib/when/when.js",
"when/*": "lib/when/*.js",
"*": "lib/*.js"
}
});
К моему указателю.html-файл, и я, вероятно, мог бы продолжать добавлять файлы в этот список, но почему-то это ощущается ... неправильный.
Конечно, это не может быть правильно, что я должен перечислить внутреннюю файловую структуру каждого пакета в моем индексе.HTML-код? Я вижу, что модуль " когда "предполагает найти свои собственные зависимости в"./ lib", где " отдыхают" имеет совершенно иную структуру.
Итак, мои вопросы таковы:
-
Что я неправильно понял в том, как импортировать пакеты javascript, управляемые через bower (или npm), в клиентскую часть Angular2?
-
Мне действительно нужно перечислить каждый файл каждого модуля в системе.пути, чтобы заставить его работать?
1 ответ:
TSD устарел пожалуйста, используйте typings для установки файлов объявлений (.д.ТС). Файлы объявлений, если они установлены правильно,можно найти в каталоге typings. Файл объявления описывает форму внешней библиотеки JavaScript. Они в первую очередь помогают вам во время разработки (завершение кода, проверка типа и т. д.). Вам не нужно импортировать их в свой машинописный текст. Их можно исключить из процесса компиляции typescript с помощью параметра exclude в tsconfig.файл json. Вам не нужно включать внешние библиотеки javascript в свою систему.config, просто сделайте ссылку на скрипт в своем индексе.формат html. Вы можете сопоставить модули typescript, такие как angular2 в вашей системе.настройте другие URL-адреса и объявите свое собственное приложение typescript как пакет. Итак:
- .D. ts файлы для внешних библиотек javascript в основном файлы времени разработки.
- модули typescript могут быть сопоставлены с вашими собственными URL-адресами
- определите ваше собственное приложение typescript как пакет.
- Нет, вы делаете не нужно постоянно добавлять файлы в вашу систему.конфиг.
Пример tsconfig.json:
{ "compilerOptions": { "target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false, }, "exclude": [ "node_modules", "wwwroot", "typings/main", "typings/main.d.ts" ] }
Пример Системы.конфиг с приложением в wwwroot / cool / app:
System.config({ defaultJSExtensions: true, packages: { 'cool/app': { format: 'register', defaultExtension: 'js' }, }, map: { 'rxjs': 'assets/scripts/rxjs', 'angular2': 'assets/scripts/angular2' } });