Node.JS vm.runInNewContext () vs require () y eval ()

  • ¿Se considera vm.runInNewContext como magia negra como eval ?
  • ¿Existe una diferencia de rendimiento significativa entre require y leer un archivo y usar vm para ejecutarlo o es el mismo debajo del capó (si implementó el almacenamiento en caché, etc. y solo quería agregar algunas variables al contexto)

runInNewContext no debe utilizarse como reemplazo de require o eval , sino como una forma de crear un entorno de runInNewContext en el que pueda ejecutar otros scripts de forma segura.

Las desventajas son que es lento (la creación tarda unos 10 ms) y ocupa un par de megabytes. Así que no, no lo use como un reemplazo require .

Si revisa el código que implementa la carga de módulos en node.js , verá que requiere usar vm.runInNewContext o vm.runInThisContext debajo del capó. Sin embargo, el require hace algunas otras cosas adicionales, como el almacenamiento en caché del módulo.

La documentación del nodo muestra cómo el comportamiento es similar y diferente entre los comandos vm y eval.

Entonces, require, eval y vm son todos un poco diferentes, pero todos pueden usarse para cargar código. Todos ellos tienen problemas de seguridad similares si está cargando un código arbitrario que proviene del cliente.

    Intereting Posts