Angular2 Приложение: выберите, поскольку Google не загружает содержимое страницы
Я работаю над веб-приложением Angular2. Я использовал Angular CLI для создания приложения, а затем для его создания для prod. Я разместил сайт на AWS S3 и Cloudfront. Когда я использую инструмент "Получить как Google" у веб-мастера, он показывает только Loading...
.
![введите описание изображения здесь]()
Разве Googlebot не может сканировать мой сайт?
Ответы
Ответ 1
была похожая проблема. Я считаю, что Google-Bot не поддерживает современные JS. Я просто активировал все прокладки, рекомендованные angular.io, см. Https://angular.io/docs/ts/latest/guide/browser-support.html, и добавил их в заголовок скрипта:
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/shim.min.js"></script>
Если вы действительно нуждаетесь во всех них, я не уверен, но в любом случае мне нужна поддержка более старого IE.
Если это работает для всех поисковых роботов, очень неясно, если вам нужно их поддерживать, вы можете попробовать https://prerender.io/. Однако они также могут просто сделать это с помощью прокладок.
Надеюсь это поможет.
Ответ 2
Поскольку ваш интерфейс не обслуживается каким-либо серверным языком, я бы рекомендовал использовать Angular2 -Universal для обслуживания статический HTML-сайт при начальной загрузке.
Вы можете проверить их quickstart и заставить его работать довольно быстро.
Ответ 3
Сначала об этом говорили в NG-Conf 2018 апр. Для слайдов нажмите здесь
Глядя на исходный код Angular.io, вот как ребята из Angular делают это согласно слайдам
<script>
if (window.document.documentMode) {
// polyfill IE11 in a blocking way
var s = document.createElement('script');
s.src = 'generated/ie-polyfills.min.js';
document.head.appendChild(s);
} else if (!Object.assign) {
// polyfill other non-evergreen browsers in a blocking way
var polyfillUrl = "https://cdn.polyfill.io/v2/polyfill.min.js?features=default,Array.prototype.find&flags=gated&unknown=polyfill";
// send a blocking XHR to fetch the polyfill
// then append it to the document so that its eval-ed synchronously
// this is required because the method used for IE is not reliable with other non-evergreen browsers
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() {
var s = document.createElement('script');
s.type = 'text/javascript';
var code = this.responseText;
s.appendChild(document.createTextNode(code));
document.head.appendChild(s);
});
xhr.open("GET", polyfillUrl, false);
xhr.send();
}
</script>
Добавьте приведенный выше скрипт в раздел HEAD вашего индексного файла.
Стоит отметить, что если вы ответите простым добавлением CDN, вы, скорее всего, загружаете скрипт, который не нужен для большинства современных браузеров, и их следует избегать.