Maison >interface Web >Questions et réponses frontales >Quelle est la différence entre nodejs et le navigateur
Différence : 1. Dans l'environnement global, ceci dans le nœud pointe vers global, tandis que dans le navigateur, cela pointe vers window ; 2. DOM et BOM peuvent être utilisés directement ou indirectement dans le navigateur, mais DOM et BOM ne sont pas utilisés dans node; 3 , le navigateur ne peut pas effectuer d'opérations sur les fichiers et d'autres fonctions dans nodejs.
L'environnement d'exploitation de ce tutoriel : système windows7, nodejs version 12.19.0, ordinateur DELL G3.
Tout récemment, un ami m'a posé des questions sur ce problème. Permettez-moi de parler brièvement de la différence entre l'environnement de nœud et le navigateur tel que je le comprends. Experts, veuillez l'ignorer.
1. L'intérêt de ceci dans l'environnement global
Dans node this pointe vers global et dans le navigateur cela pointe vers window C'est pourquoi une racine est définie en trait de soulignement au début
var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this;
Et dans. le navigateur Il existe de nombreuses API encapsulées sous la fenêtre, telles que l'alerte, le document, l'emplacement, l'historique, etc. 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. . .
Bien sûr, il existe de nombreuses autres différences entre le nœud et les navigateurs, et je les ajouterai à tout moment.
【Apprentissage recommandé : "Tutoriel 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!