3
votes

Comment faire SSR avec stencil.js dans un projet avec Nuxt.js (SSR également)

Je souhaite utiliser une bibliothèque stencil dans mon projet nuxt .

J'ai pu le faire fonctionner, mais pendant le rendu des composants vue côté serveur, je ne pouvais faire que le composant du stencil pour le rendre côté client.

Je pense que le plus gros problème est que defineCustomElement a besoin de la window comme paramètre.

Je sais que stencil.js a ce "prerender" qui est fondamentalement SSR dans ma compréhension, je voulais l'utiliser aussi bien que Nuxt.js SSR. < / p>

Ma question est donc la suivante: comment configurer un projet nuxt pour prendre en charge le rendu côté serveur pour stencil.js ?


2 commentaires

vous ne pouvez pas. La prise en charge de SSR est quelque chose qui devrait être fait au niveau de la bibliothèque. Donc, stencil.js prend en charge ssr ou ne prend pas en charge. S'il repose sur window - il ne prend pas en charge ssr.


voir github.com/jagreehal/stencil-ssr-example


3 Réponses :


0
votes

et il est dit ici que le prerender se produit au moment de la construction, donc ce ne sera pas possible: / dommage


0 commentaires

0
votes

En effet, vous avez une solution de contournement

  1. Vous devez publier votre composant Web dans unpkg ou tout autre CDN public (ou privé)
  2. Dans votre fichier nuxt.config.js, ajoutez un script dans votre script de section. Ce script doit faire référence à votre bibliothèque publique ( https://stenciljs.com/docs/javascript )

Pour plus d'informations sur l'ajout d'une ressource externe à votre projet nuxt, veuillez lire: https: // nuxtjs. org / faq / -> Comment utiliser les ressources externes

Acclamations


1 commentaires

désolé, mais cette méthode fonctionne-t-elle avec le rendu côté serveur? est-il livré au client de manière pré-rendue?



2
votes

Mise à jour: je développe actuellement un module Nuxt à intégrer aux bibliothèques basées sur stencil.js.

https://github.com/Gomah/nuxt-stencil

Ce qu'il fait:

  • Il crée deux hooks pour les applications basées sur SSR (universel ou au moment de la construction) en utilisant le render: route & generate: page , il rendra le pochoir composants avant de renvoyer la demande au navigateur.

  • Il injecte un plugin pour CSR pour définir les éléments personnalisés de votre bibliothèque de pochoirs, comme décrit ici < / a>.

⚠️ Remarque: Vue génère quelques erreurs lors de l'hydratation de la RSE, c'est probablement dû aux commentaires que le moteur de rendu injecte lors du rendu des composants du pochoir



Commentaire obsolète, avant Stencil V1:

Il semble que Stencil v1 pourrait résoudre le SSR, d'après ce commentaire :

Stencil One utilisera la cible de sortie dist-hydrate-script pour générer un script de nœud qui peut être utilisé pour hydrater vos scripts. Puis le le script généré dist / hydrate / index.js est quelque chose que vous pouvez réutiliser nombreux emplacements (Angular Universal, Express Middleware, personnalisé pré-rendu, etc.).

Si vous faites un pré-rendu, vous pourrez simplement ajouter le --prerender flag à votre composition de pochoir, et il gérera tout cela pour vous. Nous y travaillons toujours activement et espérons pouvoir l'expédier bientôt. Merci

Problèmes liés à Github:

https://github.com/ionic-team/stencil/issues/1036

https://github.com/ionic-team/stencil/issues/1449


0 commentaires