Angular y SEO: ¿cómo hacerlos amigos?

A pesar de las declaraciones de Google y Yandex de que los bots de búsqueda admiten el análisis del sitio SPA, no debe confiar en la indexación normal: los bots de búsqueda tienen pocos recursos, su aplicación debería funcionar lo más rápido posible, de lo contrario, se reducirá la calificación o la página no se librará, o el bot puede no esperes a que todos tus scripts funcionen ...
( investigación de google bot )


Cambio de asistencia

Mi pequeño proyecto de investigación tecnológica está cambiando la asistencia después de pasar a Renderizado del lado del servidor (SSR)


Cómo configurar ejemplos angulares y prefabricados a continuación.


Prerender


Una representación previa es la generación de estadísticas de nuestra página SPA, que contiene un DOM persistente.


Se adapta a :


  1. para páginas estáticas simples
  2. con datos constantes o que cambian lentamente
  3. para crear páginas donde se tarda mucho tiempo en recibir datos del servidor de datos (+ punto 2)
  4. cuando los datos de la API no son importantes, solo debe crear metaetiquetas SEO

No adecuado :


  1. la relevancia de los datos es importante y está cambiando rápidamente
  2. la cantidad de datos no permite construir estadísticas
  3. construir estadísticas es demasiado largo para ti

Angular universal


Angular Universal es una biblioteca para crear aplicaciones de Angular en el lado del servidor, actualmente Universal es la parte oficial de Angular ( https://github.com/angular/universal )


Cómo funciona Universal y cómo crearlo lea aquí: https://angular.io/guide/universal


Sutilezas:


La implementación universal se basa en NodeJS y .Net Core.
NO le aconsejo que use la implementación de .Net Core para Universal ya que:


  1. dentro de usted todavía usa renderizado a través de NodeJS
  2. es más lento: https://github.com/angular/universal/issues/654#issuecomment-350037107
  3. menos ejemplos

Buenos ejemplos de entrantes:


  1. https://github.com/qdouble/angular-webpack-starter
  2. https://github.com/ng-seed/universal
  3. https://github.com/Angular-RU/angular-universal-starter

Para el DOM, el servidor utiliza domino basado en dom.js de Mozilla, lo que evita errores como el document is not defined .
El código en server.ts para excluir errores de bibliotecas de terceros:


 global['window'] = win; Object.defineProperty(win.document.body.style, 'transform', { value: () => { return { enumerable: true, configurable: true }; }, }); global['document'] = win.document; global['CSS'] = null; 

Prerender en angular


Para crear estadísticas, debe especificar rutas para el procesamiento, por ejemplo: static.paths.ts .
Escribimos el script de prerender en prerender.ts .
Para construir una representación, ejecuta:
ng build --prod && ng run universal-demo:server:production && webpack --progress --colors
para construir código de servidor y angular, luego node prerender.js para construir estadísticas.
La estática recibida a través de una representación previa puede ser dada por nginx.


Para construir el SSR dinámicamente usaremos server.ts .
Para construir un proyecto, ejecute:
ng build --prod && ng run universal-demo:server:production && webpack --progress --colors ,
entonces node server.js .
Para que el servidor funcione, debe tener un node .


Puede usar un enfoque combinado: prerrepresentación y SSR dinámico, si proporciona páginas preprocesadas a ciertas rutas: código del servidor


Las cookies deben usarse para la autorización, un ejemplo de trabajo con cookies


Para crear metainformación, recomiendo usar shared-meta.module , que también admite la traducción de metainformación.


Para solicitar información de la API en el servidor sin volver a solicitarla en el navegador, recomiendo usar:



Ejemplo de compilación de Docker con compilaciones de varias etapas:



Prueba:



comunidad universal de telegramas

Source: https://habr.com/ru/post/es423739/


All Articles