На додаток до чудових пояснень echonax
і Nishchit Dhanani
хочу додати, що я дуже ненавиджу популяцію компонентів module.id
. Тим більше, якщо у вас є підтримка компіляції AoT (напередодні), а для реалістичного проекту - це те, на що вам слід прагнути, module.id
у ваших компонентних метаданих немає місця для чогось подібного .
З Документів :
Програми, складені JiT, що використовують SystemJS
URL-адреси завантажувача та компонентів, повинні встановити @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 швидкий проект запуску, який заснований на цьому підході розміщується тут .