Как реализовать сайт с сотнями страниц в Angular2
Я готовлю SPA-сайт, содержащий сотни страниц, похожих на статьи (кроме электронной коммерции, логина и т. Д.). Каждая статья имеет свой собственный URL. Я хочу реализовать это с помощью Angular2. Единственное решение, которое я нашел до сих пор:
1. подготовить сотни компонентов Agular2, по одному компоненту для каждой статьи ...
... с templateUrl, указывающим на разметку статьи. Поэтому мне понадобятся сотни компонентов, аналогичных:
@core.Component({
selector: 'article-1',
templateUrl: 'article1.html'
})
export class Article1 {}
2. отобразить статью, используяAsyncRoute
увидетьЛенивая загрузка компонентов маршрута в Angular2
@core.Component({
selector: 'article-wrapper',
template: '<router-outlet></router-outlet>'
})
@router.RouteConfig([
new router.AsyncRoute({
path: '/article/:id',
loader: () => {
switch (id) {
case 1: return Article1;
case 2: return Article2;
//... repeat it hundreds of times
}
},
name: 'article'
})
])
class ArticleWrapper { }
В Angular1 существовала директива ngInclude, которая отсутствует в Angular2 из-за проблем безопасности (см.Вот).
[Правка 1] Существует не только проблема с самим кодом. Проблема также сстатическая природа этого решения. Если мне нужен сайт с картой сайта и динамической структурой страницы - для добавления одной страницы требуется перекомпиляция всего модуля JavaScript ES6.
[Правка 2] Концепция «разметка x html как данные» (где разметка представляет собой не только статический HTML, но и HTML с активными компонентами) - это базовая концепция всей сети (каждая CMS имеет свои данные разметки в базе данных). Если для него не существует решения Angular2, оно отрицает эту базовую концепцию. Я считаю, что должен быть какой-то трюк.