Remarque* Il s'agit d'un "ancien" projet de plus de deux ans, qui permet d'utiliser le sélecteur de jQuery dans NodeJS pour faire fonctionner le back-end HTML/XML comme le front-end DOM Après avoir supprimé le code lié à la compatibilité du navigateur. , Les opérations sont 8 fois plus rapides que JSDOM Nous avons déjà mentionné que JSDOM présente de sérieux problèmes de performances : Debug Node.JS : Comment localiser les fuites de mémoire et les boucles infinies
joyeux
Rapide, flexible, utilisant jQuery côté serveur.
Présentation
Testez votre HTML côté serveur :
Installer
npm installer cheerio
Fonction
❤ Syntaxe familière : Cheerio implémente un sous-ensemble du noyau jQuery. Cheerio supprime toutes les incohérences DOM et la compatibilité des navigateurs de la bibliothèque jQuery, présentant ainsi son API vraiment magnifique.
ϟ Extrêmement rapide : Cheerio utilise un modèle DOM très simple et cohérent. Cela se traduit par des gains de performances incroyables pour l'analyse, la manipulation et le rendu. Des tests préliminaires de bout en bout montrent que Cheerio est environ 8 fois plus rapide que JSDOM.
❁Flexibilité incroyable : compatible avec htmlparser2API. Cheerio peut analyser presque n'importe quel document HTML ou XML.
Et JSDOM ?
J'écris Cheerio parce que je suis de plus en plus frustré par JSOM. Pour moi, il y a trois problèmes majeurs que je rencontre encore et encore :
• L'analyseur intégré de JSDOM est trop strict : l'analyseur HTML fourni avec JSDOM ne peut actuellement pas gérer de nombreux sites Web populaires.
•JSDOM est trop lent : lors de l'analyse de grands sites Web, JSDOM présente des retards évidents.
•JSDOM semble trop lourd : le but de JSDOM est de fournir un environnement DOM qui est le même que ce que nous voyons dans le navigateur (remarque * JavaScript exécutable). Je n'ai jamais vraiment eu besoin de tout cela, je veux juste une manière simple et familière de manipuler du HTML.
Quand utiliser JSDOM
Cheerio ne peut pas résoudre tous vos problèmes. Si je dois travailler dans un environnement de type navigateur, j'utiliserai toujours JSDOM, surtout si je souhaite effectuer des tests fonctionnels automatisés sur le serveur.
API
Exemple de code HTML que nous utiliserons :
Chargement
Tout d’abord, vous devez charger le HTML. Cette étape est effectuée automatiquement dans jQuery car jQuery s'exécute dans un environnement DOM en temps réel. Nous devons transmettre le document HTML à Cheerio.
C'est la méthode préférée :
Alternativement, vous pouvez transmettre du HTML en tant que paramètre de chaîne :
ou en tant que nœud racine
Vous pouvez également charger les options d'analyse par défaut que vous devez modifier via un .load() supplémentaire :
Ces options d'analyse sont empruntées directement à htmlparser2, donc tous les paramètres pouvant être utilisés dans htmlparser2 sont également valides dans cheerio. L'option par défaut est :
Sélecteurs
Les sélecteurs de Cheerio sont presque identiques à ceux de jQuery, donc l'API est très similaire.
Le sélecteur sélectionne les éléments dans l'ordre : racine[racine, facultatif]->Contexte[contexte, facultatif]->sélecteur. Les sélecteurs et les contextes peuvent être une expression de chaîne, un élément DOM ou un tableau d'éléments DOM. La racine du document est généralement l'élément racine du document HTML.
Comme jQuery, cette méthode de sélection parcourt et manipule le document depuis le point de départ. Il s'agit du principal moyen de sélectionner des éléments d'un document, mais il n'est pas construit comme la bibliothèque CSSSelect de jQuery (sélecteur Sizzle).
Attributs
Méthodes pour obtenir et modifier les propriétés.
.attr( nom, valeur )
Méthodes d'obtention et de définition des propriétés. Obtient uniquement la valeur d'attribut du premier élément correspondant. Si la valeur d'une propriété définie est définie sur null, la propriété est supprimée. Vous pouvez également transmettre une carte et une fonction comme jQuery.
.data( nom, valeur )
Méthodes d'obtention et de définition des propriétés des données. Obtient ou définit uniquement le premier élément de la correspondance.
Méthodes pour obtenir et définir les valeurs de saisie, de sélection et de zone de texte. Remarque : la carte est prise en charge, la fonction n'a pas encore été ajoutée.
Pour plus d'API, veuillez visiter le site officiel