Maison >interface Web >Questions et réponses frontales >Quelle est la différence entre l'environnement de nœud et l'environnement de navigateur ?

Quelle est la différence entre l'environnement de nœud et l'environnement de navigateur ?

WBOY
WBOYoriginal
2022-04-19 16:34:021944parcourir

Différence : 1. Dans le nœud, cela pointe vers global, mais dans le navigateur, cela pointe vers window ; 2. Dans la plupart des cas, js dans le navigateur exploite directement ou indirectement le DOM, mais n'exploite pas le DOM dans le nœud ; 3. Node fournit des composants plus pratiques pour lire et écrire des fichiers, mais il n'y a aucun composant dans le navigateur.

Quelle est la différence entre l'environnement de nœud et l'environnement de navigateur ?

L'environnement d'exploitation de ce tutoriel : système windows10, nodejs version 12.19.0, ordinateur Dell G3.

Quelle est la différence entre l'environnement de nœud et l'environnement de navigateur ?

1. L'intérêt de ceci dans l'environnement global

Dans le nœud, cela pointe vers global et dans le navigateur, cela pointe vers window. est défini en trait de soulignement au début. Une racine ;

var root = typeof self == 'object' && self.self === self && self ||
             typeof global == 'object' && global.global === global && global ||
             this;

 Et il encapsule de nombreuses API sous la fenêtre du navigateur, telles que l'alerte, le document, l'emplacement, l'historique et bien d'autres. Nous ne pouvons pas utiliser xxx(); ou window.xxx(); dans l'environnement de nœud. Étant donné que ces API sont une encapsulation au niveau du navigateur, elles ne sont pas disponibles en JavaScript. Bien entendu, node fournit également de nombreuses API spécifiques au nœud.

2. moteur js

Différents fabricants de navigateurs fournissent différents noyaux de navigateur dans les navigateurs, et les navigateurs s'appuient sur ces noyaux pour interpréter et plier les js que nous écrivons. Mais compte tenu des petites différences entre les différents noyaux, nous avons besoin d'une compatibilité correspondante. Heureusement, il existe d'excellentes bibliothèques pour nous aider à résoudre ce problème, comme jquery, underscore, etc.

 Nodejs est basé sur le runtime JavaScript de Chrome, ce qui signifie qu'il encapsule en fait le moteur Google V8 (appliqué au navigateur Google Chrome). Le moteur V8 exécute Javascript très rapidement et offre de très bonnes performances.

NodeJS ne fournit pas d'encapsulation simple, puis ne fournit pas d'appels API. Si tel était le cas, il ne serait pas aussi populaire qu'aujourd'hui. Node a optimisé certains cas d'utilisation spéciaux et fourni des API alternatives pour améliorer le fonctionnement de la V8 dans des environnements sans navigateur. Par exemple, dans un environnement serveur, le traitement des données binaires est souvent essentiel, mais Javascript ne le prend pas suffisamment en charge. Par conséquent, V8.Node ajoute la classe Buffer pour traiter les données binaires de manière pratique et efficace. Par conséquent, Node utilise non seulement simplement le V8, mais l’optimise également pour le rendre plus puissant dans divers environnements.

 Le moteur js a été corrigé et il prend également en charge la compatibilité Shenma.

3. Fonctionnement du DOM

Dans la plupart des cas, js dans le navigateur exploite le DOM directement ou indirectement (certaines bibliothèques et frameworks DOM virtuels). Parce que le code du navigateur fonctionne principalement dans la couche de présentation. Mais le nœud est une technologie côté serveur. Il n’y a pas de page d’accueil, nous n’exploiterons donc pas le DOM en nœud.

4. Lecture et écriture d'E/S

Contrairement aux navigateurs, nous devons lire et écrire des fichiers comme les autres technologies côté serveur fournissent des composants plus pratiques. Et le navigateur (pour assurer la compatibilité) a beaucoup de mal s'il veut ouvrir directement une image locale dans la page (ne me dites pas que ce n'est pas simple, chemin relatif... Essayez-le et vous saurez, ou trouvez une bibliothèque Soit un flux binaire, soit l'adresse réseau est affichée lors du téléchargement. Sinon, pourquoi quelqu'un créerait-il une bibliothèque js ?), et tout cela est fait par nœud à l'aide d'un composant.

5. Chargement du module

JavaScript a une caractéristique, c'est-à-dire que l'API native qui ne fournit pas de références de package exécute toutes les choses à charger en même temps. Ici, cela dépend de vos compétences en matière de fermeture. Toutes les choses utilisées sont ensemble, il n’y a pas de diviser pour mieux régner, et il n’y a pas de logique ou de réutilisation. Si la page ou le site Web est simple, nous pouvons bien sûr utiliser certaines bibliothèques AMD et CMD js (telles que requireJS et seaJS) pour le faire. En fait, de nombreux grands sites Web le font.

  L'API de chargement du module CMD est fournie dans nodeJS Si vous avez utilisé seaJS, vous devriez vous lancer rapidement.

 Node fournit également npm, un outil de gestion de paquets, qui peut gérer plus efficacement et plus facilement nos bibliothèques de boissons

  Bien sûr, ES6 côté navigateur a également cet ajout, je pense que ce sera mieux à l'avenir. . .

Apprentissage recommandé : "Tutoriel vidéo Nodejs"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn