На додаток до чудових пояснень echonaxі Nishchit Dhananiхочу додати, що я дуже ненавиджу популяцію компонентів module.id. Тим більше, якщо у вас є підтримка компіляції AoT (напередодні), а для реалістичного проекту - це те, на що вам слід прагнути, module.idу ваших компонентних метаданих немає місця для чогось подібного .
З Документів :
Програми, складені JiT, що використовують SystemJSURL-адреси завантажувача та компонентів, повинні встановити @Component.moduleIdвластивість module.id. Об'єкт модуля не визначено, коли запускається додаток, складене AoT. У програмі не вдається помилка з нульовим посиланням, якщо ви не призначите глобальне значення модуля в index.html, як це:
<script>window.module = 'aot';</script>
Я думаю, що цей рядок у виробничій версії index.htmlфайлу абсолютно неприйнятний!
Тому мета - мати (Just-in-Time) JiT-компіляцію для розробки та підтримку AoT для виробництва із наступним визначенням компонентів метаданих: (без moduleId: module.idрядка)
@Component({
selector: 'my-component',
templateUrl: 'my.component.html', <- relative to the components current path
styleUrls: ['my.component.css'] <- relative to the components current path
})
У той же час я хотів би розмістити стилі, як my.component.cssі файли шаблонів, як my.component.html відносно компонентів до my.component.tsфайлових шляхів.
Щоб досягти всього цього, рішення, яке я використовую, полягає в розміщенні веб-сервера (Lite-сервер або синхронізація браузера) під час фази розробки з декількох джерел каталогів!
bs-config.json:
{
"port": 8000,
"server": ["app", "."]
}
Будь ласка , взяти взяли в цей відповідь для мене деталі.
Приблизний кутовий 2 швидкий проект запуску, який заснований на цьому підході розміщується тут .