Qu'est-ce que la VM ?
Le module VM est le module principal de NodeJS, prenant en charge la méthode require et le mécanisme de fonctionnement de NodeJS. Parfois, nous pouvons également utiliser des modèles de VM pour effectuer certaines choses spéciales.
Grâce à la VM, JS peut être compilé et exécuté immédiatement ou compilé, enregistré et exécuté plus tard
.
Le module VM contient trois méthodes couramment utilisées pour créer un système sandbox fonctionnant de manière indépendante, comme suit :
vm.runInThisContext(code, nom de fichier);
Cette méthode est utilisée pour créer un espace d'exécution sandbox indépendant. Le code dans le code peut accéder aux objets globaux externes, mais ne peut pas accéder à d'autres variables
Et le code est partagé en interne et en externe
Cette méthode est utilisée pour créer un espace d'exécution sandbox indépendant. sandBox sera transmis en tant que variable globale dans le code, mais il n'y a pas de variable globale
L'exigence sandBox est la sandBox créée par la méthode vm.createContext()
Comparer
Situations plus complexes
Que se passera-t-il si runInThisContext est exécuté dans runInContext ? À qui runInThisContext accède-t-il à l'objet global ?
Comment le code suivant sera-t-il exécuté ?
Le code à l'intérieur de runInThisContext peut accéder aux objets globaux externes, mais il n'y a en fait aucun objet global à l'extérieur (bien qu'il y en ait, ce n'est pas essentiellement un objet global). Rappelez-vous simplement que runInThisContext ne peut accéder qu'à l'objet global supérieur
.Les résultats d'exécution sont les suivants