Oggetto oggetto incorporato

OggettoSandBox

Oggetto sandbox isolato, utilizzato per gestire uno spazio di corsa indipendente

Tutto il codice viene eseguito nella propria sandbox. Il require globale chiamerà la sandbox corrente per caricare il modulo e la sandbox verrà passata alla sandbox caricata tramite require. L'esempio seguente crea una sandbox che limita l'accesso solo ai moduli di base globali.assertmodule e aggiungi due moduli personalizzati a e b:

1 2 3 4 5 6 7 8
var vm = require('vm'); var sbox = new vm.SandBox({ a: 100, b: 200, assert: require('assert') }); var mod_in_sbox = sbox.require('./path/to/mod');

Va notato che SandBox non è un sandbox di sicurezza a prova di attacco, ma è semplicemente uno spazio di esecuzione indipendente che può essere utilizzato per isolare codici diversi ed evitare interferenze reciproche, ma non può prevenire codice dannoso.

rapporto ereditario

Costruttore

SandBox

Costruisci un nuovo oggetto sandbox di isolamento e inizializza il modulo base

1
new SandBox(Object mods = {});

Parametri di chiamata:

  • mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere

Costruisci un nuovo oggetto sandbox di isolamento e inizializza il modulo base

1 2
new SandBox(Object mods, Function require);

Parametri di chiamata:

  • mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
  • require: Funzione, una funzione di richiesta personalizzata.Quando il modulo non esiste, la funzione personalizzata viene prima chiamata, senza ritorno, e quindi caricata dal file.

Costruisci un nuovo oggetto sandbox di isolamento globale indipendente e inizializza il modulo di base

1 2
new SandBox(Object mods, Object global);

Parametri di chiamata:

  • mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
  • global: Oggetto, specifica la proprietà globale inizializzata

Costruisci un nuovo oggetto sandbox di isolamento globale indipendente e inizializza il modulo di base

1 2 3
new SandBox(Object mods, Function require, Object global);

Parametri di chiamata:

  • mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
  • require: Funzione, una funzione di richiesta personalizzata.Quando il modulo non esiste, la funzione personalizzata viene prima chiamata, senza ritorno, e quindi caricata dal file.
  • global: Oggetto, specifica la proprietà globale inizializzata

proprietà dei membri

global

Oggetto, query sandboxglobaloggetto

1
readonly Object SandBox.global;

modules

Oggetto, interroga l'oggetto dizionario di tutti i moduli esistenti nella sandbox

1
readonly Object SandBox.modules;

funzione membro

addBuiltinModules

Aggiungi moduli base integrati alla sandbox

1
SandBox.addBuiltinModules();

add

Aggiungi un modulo base alla sandbox

1 2
SandBox.add(String id, Value mod);

Parametri di chiamata:

  • id: String, specifica il nome del modulo da aggiungere. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.
  • mod: Valore, specifica l'oggetto modulo da aggiungere

Aggiungi una serie di moduli base alla sandbox

1
SandBox.add(Object mods);

Parametri di chiamata:

  • mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere. Il modulo javascript aggiunto genererà una copia per evitare interferenze reciproche tra gli oggetti di modifica del sandbox.

addScript

Aggiungi un modulo di script alla sandbox

1 2
Value SandBox.addScript(String srcname, Buffer script);

Parametri di chiamata:

  • srcname: String, specifica il nome dello script da aggiungere, srcname deve includere l'estensione, ad esempiojsonOppure js, jsc
  • script:Buffer, specifica il codice binario da aggiungere

Risultati restituiti:

  • Value, restituisce l'oggetto modulo caricato

remove

Rimuove il modulo base specificato dalla sandbox

1
SandBox.remove(String id);

Parametri di chiamata:

  • id: String, specifica il nome del modulo da eliminare. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.

has

Rileva se il modulo base esiste dalla sandbox

1
Boolean SandBox.has(String id);

Parametri di chiamata:

  • id: String, specifica il nome del modulo da rilevare. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.

Risultati restituiti:

  • Boolean, esiste

clone

Copia la sandbox corrente. La nuova sandbox contiene i moduli della sandbox corrente con lo stesso nome e la funzione richiesta.

1
SandBox SandBox.clone();

Risultati restituiti:

  • SandBox, copiato il nuovo sandbox

freeze

Congela il sandbox corrente e il sandbox congelato.globalLe modifiche apportate verranno ignorate

1
SandBox.freeze();

run

eseguire uno script

1
SandBox.run(String fname);

Parametri di chiamata:

  • fname: String, specifica il percorso dello script da eseguire. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione e deve essere un percorso assoluto.

resolve

Interroga un modulo e restituisce il nome file completo del modulo

1 2
String SandBox.resolve(String id, String base);

Parametri di chiamata:

  • id: String, specifica il nome del modulo da caricare
  • base: Stringa, specifica il percorso di ricerca

Risultati restituiti:

  • String, restituisce il nome file completo del modulo caricato

require

Carica un modulo e restituisce l'oggetto modulo

1 2
Value SandBox.require(String id, String base);

Parametri di chiamata:

  • id: String, specifica il nome del modulo da caricare
  • base: Stringa, specifica il percorso di ricerca

Risultati restituiti:

  • Value, restituisce l'oggetto modulo caricato

setModuleCompiler

Aggiungi un compilatore al nome ext specificato. Il nome ext non può essere un'estensione incorporata nel sistema (inclusi {'.js', '.json', '.jsc', '.wasm'}), il compilatore deve restituire uno script javascript valido.

1 2
SandBox.setModuleCompiler(String extname, Function compiler);

Parametri di chiamata:

  • extname: String, l'extname specificato deve iniziare con "." ed è un'estensione incorporata non di sistema.
  • compiler: Funzione, funzione di callback di compilazione, tutti i file con extname richiederanno solo una volta. Il formato della funzione di callback è compiler(buf, requireInfo), buf è il file lettoBuffer, la struttura requireInfo è {filename: string}.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
var vm = require('vm'); var sbox = new vm.SandBox({}); // compile ts to js and load sbox.setModuleCompiler('.ts', tsCompiler); var mod_ts = sbox.require('./a.ts'); // compile coffee to js and load sbox.setModuleCompiler('.coffee', cafeCompiler); var mod_coffee = sbox.require('./a.coffee'); // compile jsx to js and load sbox.setModuleCompiler('.jsx', reactCompiler); var mod_react = sbox.require('./a.jsx'); // compile yaml to rest and load sbox.setModuleCompiler('.yml', yaml2Rest) sbox.setModuleCompiler('.yaml', yaml2Rest) // compile markdown to html and load sbox.setModuleCompiler('.md', mdCompiler) sbox.setModuleCompiler('.markdown', mdCompiler)

toString

Restituisce la rappresentazione in formato stringa dell'oggetto. Generalmente viene restituito "[Oggetto nativo]". L'oggetto può essere reimplementato in base alle proprie caratteristiche.

1
String SandBox.toString();

Risultati restituiti:

  • String, restituisce la rappresentazione di stringa dell'oggetto

toJSON

Restituisce una rappresentazione in formato JSON dell'oggetto, generalmente restituendo una raccolta di proprietà leggibili definite dall'oggetto.

1
Value SandBox.toJSON(String key = "");

Parametri di chiamata:

  • key: Stringa, non utilizzata

Risultati restituiti:

  • Value, restituisce un valore contenente JSON serializzabile