AngularJS - rendu côté serveur
Comme vous le savez peut-être, AirBnb opensourced Rendr (http://nerds.airbnb.com/weve-open-sourced-rendr) qui devrait permettre rendu côté serveur de épine Dorsale apps. C'est cool, car on peut lancer la première "itération" du modèle de rendu sur le serveur et le client obtient complètement rendu HTML document ainsi que l'ensemble de la JS app. Il réduit considérablement les temps d'affichage et peut nous débarrasser de l'autre côté serveur création de modèles de systèmes.
Donc, avoir quelqu'un a réussi à rendre AngularJS avec jsdom ou ZombieJS? Ces dom/navigateur émulations sur Node.js devrait en théorie être assez simple de serveur-côté Angulaire de la création de modèles, mais les résultats que j'ai trouvé sur google, il ne sont pas très concluants.
- Il peut être à venir dans AngularJS 2.0. Dans cette vidéo ils parlent de rendu côté serveur & pourquoi il n'est actuellement pas possible de faire une telle chose avec AngularJS pour le moment.
- les réponses de travail pour vous ?
Vous devez vous connecter pour publier un commentaire.
Voici une autre solution: https://github.com/ithkuil/angular-on-server
wiki pour plus de détails
Mise à jour de l'auteur de ce repo: qui a environ 6 ans (au moment de cette édition). À ce stade, les gens devraient probablement être à l'aide de https://angular.io/guide/universal ou tout simplement https://prerender.io/
Ce nouveau package https://github.com/a-lucas/angular.js-server vous permet de pré-rendu Angulaire de l'application et envoyer le HTML pour le client, qui va ensuite exécuter le code jS.
Il prend en charge la mise en cache par url et vous pouvez définir des règles pour activer l'URL de pré-rendu.
PS: je suis le principal contributeur de ce paquet.
AngularJS travaille dans jsdom contexte sans toutes les astuces. Ajoutez simplement angular.js js src liste et la page principale de l'angulaire de l'application de jsdom sur son initializion.
Donc, le rendu est très simple: il suffit d'utiliser angulaire dans jsdom et il fonctionne. Mettre de navigateur est un peu plus difficile.
Une sorte de lot de la synchronisation des DOM changements.
Pour obtenir dynamiques de serveur à client des mises à jour vous pouvez utiliser MutationEvents (malheureusement, jsdom ne prend pas en charge MutationObservers, mais MutationEvents travail assez rapide). Les utiliser à empiler vers le haut DOM changements dans l'accumulateur de tableau et de le pousser périodiquement vers le navigateur client (par exemple, par 25 ms).
Aussi pour permettre à l'utilisateur d'événements, vous devez suivre le document-sage sur le navigateur et les similarry accumuler et de les pousser vers le serveur.
Une mise en œuvre d'une telle approche est jsdom-sync (https://www.npmjs.org/package/jsdom-sync)
L'inconvénient d'un serveur de rendu côté est de l'absence de DOM boîte de la taille du modèle, parce que pour obtenir de l'élément largeur/hauteur, il doit être effectivement rendus. Signifie que cette solution correspond à peine pour le svg et ainsi de suite..
Aussi, vous pouvez envisager de regarder le champ d'application de modèle et de le synchroniser avec le navigateur côté étendues, mais c'est totalement différent.
Je suis à la recherche de solution. Mais ce n'est pas une option pour utiliser le navigateur pour afficher le code html sur le serveur et de l'envoyer à l'interface. Airbnb essayer de le premier, mais rejetée parce que c'est lent et gourmandes en ressources. Ce n'est pas une solution de production.
Mise à jour: bientôt peut être possible avec l'introduction de l'Objet.observer 😉
AngularJS 2.0 peut fonctionner sur un serveur, trop.
Vojta Jina en parle sur "JavaScript Jabber" afficher le n ° 109 - http://javascriptjabber.com/109-jsj-dependency-injection-in-javascript-with-vojta-jina-misko-hevery/ (32:30 dans le lecteur).
Il y a un lien vers la nouvelle AngularJS' injection de dépendance du module https://github.com/angular/di.js.
@dai-shi créé connectez-prerenderer, voir ici. Encore quelques questions, mais nous espérons un bon début
Une approche consiste à acheminer le HTML demandes de nodejs serveur exécutant phantomjs. J'ai utilisé une approche basée sur phantomjs. Check it out si elle n'en résout
http://himangshu.io/blog/optimizing-single-page-application-using-prerender/
Je sais c'est un peu une réponse tardive, angulaire.js-serveur (https://github.com/a-lucas/angular.js-server) utilise une version modifiée de angulaire qui déclenche un état d'inactivité nécessaire pour détecter toute requête ajax et $compiler les événements sont traités.
J'ai réussi à le pré-rendu de la mean.js pile avec presque pas de modification.
Ce n'est pas performant, mais j'ai travaillé sur un simple PhantomJS serveur pour Heorku qui va analyser tout client JS. Je l'utilise spécifiquement avec des angles et des Rails pour servir HTML pour bot demandes.
j'Espère qu'elle pourra toujours aider à la somone, mais ici, c'est un mécanisme national de prévention paquet que j'ai créé:
https://www.npmjs.com/package/ng-node-compile