Использование JSONPath было бы одним из самых гибких решений, если вы захотите включить библиотеку: https://github.com/s3u/JSONPath (узел и браузер)
Для вашего случая использования путь json будет:
$..items[1].name
, поэтому:
var secondName = jsonPath.eval(data, "$..items[1].name");
Великая вещь об Angular2 заключается в том, что при запуске все содержимое внутри вашего корневого элемента приложения уходит. Это означает, что вы можете поместить туда все, что хотите, с сервера, который вы хотите получить от искателей.
Вы можете сгенерировать этот контент, используя версию контента, содержащую сервер в вашем приложении, или пользовательская логика.
Здесь вы можете найти дополнительную информацию: https://angularu.com/VideoSession/2015sf/angular-2-server-rendering и здесь: https://github.com/angular/universal
Обработка серверов не является обязательным для достойного рейтинга google ...
У меня был форум с около 33.000 записей в файлах Sitemap для Google. Этот веб-сайт был написан с использованием веб-форм asp.net и имел приличный поток входящих запросов от Google.
Я переписал все с угловым (развернутая версия - угловая5). На этом веб-сайте была очень плохая мобильная читаемость (что было оскорблено Google, на самом деле это упоминалось в моей поисковой консоли Google). Я использую службы Title и Meta для установки моего названия и метатегов. Все маршруты содержат ключевые слова, извлеченные из фактического содержимого. Я также убедился, что каждый элемент с атрибутом [routeLink] был тегом A, на котором я также указал элемент href (это то, что искатель искал ...) И, конечно же, я уделял большое внимание мобильной читаемости.
Результат: на самом деле я получаю больше входящего трафика, чем раньше, и в консоли поиска я отчетливо вижу, что мои индексированные страницы выросли: из 30k + страниц только 10K были включены в индекс. Теперь у меня почти 25 тыс. Страниц в индексе.
Я не говорю, что рендеринг серверов не имеет значения. Использование универсальных или других методов приведет к увеличению времени загрузки, что, вероятно, приведет к более высокой оценке. Но google определенно может правильно индексировать угловой SPA.
edit: некоторые доказательства: если вы google «3ds max threadripper», вы увидите, что он фактически превосходит один из самых больших аппаратных сайтов в Интернете .
Я только что создал ng2-meta , модуль Angular2, который может изменять метатеги на основе текущего маршрута.
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
data: {
meta: {
title: 'Home page',
description: 'Description of the home page'
}
}
},
{
path: 'dashboard',
component: DashboardComponent,
data: {
meta: {
title: 'Dashboard',
description: 'Description of the dashboard page',
'og:image': 'http://example.com/dashboard-image.png'
}
}
}
];
Вы можете обновлять метатеги от компонентов, сервисов и т. д.
class ProductComponent {
...
constructor(private metaService: MetaService) {}
ngOnInit() {
this.product = //HTTP GET for product in catalogue
metaService.setTitle('Product page for '+this.product.name);
metaService.setTag('og:image',this.product.imageURL);
}
}
Хотя это относится к Javascript-совместимым сканерам (например, Google), вы можете установить резервные метатеги для не-Javascript-сканеров, таких как Facebook и Twitter.
<head>
<meta name="title" content="Website Name">
<meta name="og:title" content="Website Name">
<meta name="og:image" content="http://example.com/fallback-image.png">
...
</head>
Выполняется поддержка рендеринга на стороне сервера.