Object-ingebouwd object

ObjectSandBox

Geïsoleerd sandbox-object, gebruikt om een ​​onafhankelijke loopruimte te beheren

Alle code wordt in zijn eigen sandbox uitgevoerd. De globale require roept de huidige sandbox aan om de module te laden, en de sandbox wordt via require doorgegeven aan de geladen sandbox. In het volgende voorbeeld wordt een sandbox gemaakt die de toegang beperkt tot alleen globale basismodules.assertmodule en voeg twee aangepaste modules a en b toe:

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');

Opgemerkt moet worden dat SandBox geen aanvalsbestendige beveiligingssandbox is. SandBox is slechts een onafhankelijke loopruimte die kan worden gebruikt om verschillende codes te isoleren en wederzijdse interferentie te voorkomen, maar kan kwaadaardige code niet voorkomen.

erfenis relatie

Constructeur

SandBox

Construeer een nieuw isolatie-sandbox-object en initialiseer de basismodule

1
new SandBox(Object mods = {});

Oproepparameters:

  • mods: Object, specificeert de moduleobjectwoordenlijst die moet worden toegevoegd

Construeer een nieuw isolatie-sandbox-object en initialiseer de basismodule

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

Oproepparameters:

  • mods: Object, specificeert de moduleobjectwoordenlijst die moet worden toegevoegd
  • require: Functie, een aangepaste functie voor vereisen. Als de module niet bestaat, wordt eerst de aangepaste functie aangeroepen, zonder return, en vervolgens uit het bestand geladen.

Construeer een nieuw, onafhankelijk Global isolation sandbox-object en initialiseer de basismodule

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

Oproepparameters:

  • mods: Object, specificeert de moduleobjectwoordenlijst die moet worden toegevoegd
  • global: Object, specificeert de geïnitialiseerde eigenschap Global

Construeer een nieuw, onafhankelijk Global isolation sandbox-object en initialiseer de basismodule

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

Oproepparameters:

  • mods: Object, specificeert de moduleobjectwoordenlijst die moet worden toegevoegd
  • require: Functie, een aangepaste functie voor vereisen. Als de module niet bestaat, wordt eerst de aangepaste functie aangeroepen, zonder return, en vervolgens uit het bestand geladen.
  • global: Object, specificeert de geïnitialiseerde eigenschap Global

eigenschappen van leden

global

Object, query-sandboxglobalvoorwerp

1
readonly Object SandBox.global;

modules

Object: zoek naar het woordenboekobject van alle bestaande modules in de sandbox

1
readonly Object SandBox.modules;

lid functie

addBuiltinModules

Voeg ingebouwde basismodules toe aan de sandbox

1
SandBox.addBuiltinModules();

add

Voeg een basismodule toe aan de sandbox

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

Oproepparameters:

  • id: String, specificeert de naam van de module die moet worden toegevoegd. Dit pad heeft niets te maken met het momenteel actieve script. Het moet een absoluut pad of modulenaam zijn.
  • mod: Waarde, specificeert het moduleobject dat moet worden toegevoegd

Voeg een set basismodules toe aan de sandbox

1
SandBox.add(Object mods);

Oproepparameters:

  • mods: Object, specificeert de module-objectwoordenlijst die moet worden toegevoegd. De toegevoegde JavaScript-module genereert een kopie om wederzijdse interferentie tussen sandbox-modificatieobjecten te voorkomen.

addScript

Voeg een scriptmodule toe aan de sandbox

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

Oproepparameters:

  • srcname: String, specificeert de naam van het script dat moet worden toegevoegd, srcname moet de extensie bevatten, zoalsjsonOf js, jsc
  • script:Buffer, specificeert de binaire code die moet worden toegevoegd

Resultaten retourneren:

  • Value, retourneert het geladen moduleobject

remove

Verwijdert de opgegeven basismodule uit de sandbox

1
SandBox.remove(String id);

Oproepparameters:

  • id: String, specificeert de naam van de module die moet worden verwijderd. Dit pad heeft niets te maken met het momenteel actieve script. Het moet een absoluut pad of modulenaam zijn.

has

Detecteer of de basismodule uit de sandbox bestaat

1
Boolean SandBox.has(String id);

Oproepparameters:

  • id: String, specificeert de naam van de module die moet worden gedetecteerd. Dit pad heeft niets te maken met het momenteel actieve script. Het moet een absoluut pad of modulenaam zijn.

Resultaten retourneren:

  • Boolean, bestaat het

clone

Kopieer de huidige sandbox. De nieuwe sandbox bevat de modules van de huidige sandbox met dezelfde naam en waarvoor functionaliteit vereist is.

1
SandBox SandBox.clone();

Resultaten retourneren:

  • SandBox, nieuwe sandbox gekopieerd

freeze

Bevries de huidige sandbox en de bevroren sandbox.globalAangebrachte wijzigingen worden genegeerd

1
SandBox.freeze();

run

voer een script uit

1
SandBox.run(String fname);

Oproepparameters:

  • fname: String, specificeert het pad van het script dat moet worden uitgevoerd. Dit pad heeft niets te maken met het momenteel actieve script en moet een absoluut pad zijn.

resolve

Voer een query uit op een module en retourneer de volledige bestandsnaam van de module

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

Oproepparameters:

  • id: String, specificeert de naam van de module die moet worden geladen
  • base: String, geef het zoekpad op

Resultaten retourneren:

  • String, retourneert de volledige bestandsnaam van de geladen module

require

Laadt een module en retourneert het moduleobject

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

Oproepparameters:

  • id: String, specificeert de naam van de module die moet worden geladen
  • base: String, geef het zoekpad op

Resultaten retourneren:

  • Value, retourneert het geladen moduleobject

setModuleCompiler

Voeg een compiler toe aan de opgegeven extnaam. De extnaam mag geen ingebouwde systeemextensie zijn (inclusief {'.js', '.json', '.jsc', '.wasm'}), moet de compiler een geldig javascript-script retourneren.

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

Oproepparameters:

  • extname: String, de opgegeven extnaam moet beginnen met '.' en is een niet door het systeem ingebouwde extensie.
  • compiler: Functie, compilatie-callback-functie, alle bestanden met extname hebben slechts één keer nodig. Het formaat van de callback-functie is compiler(buf, requireInfo), buf is het leesbestandBuffer, de requireInfo-structuur is {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

Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.

1
String SandBox.toString();

Resultaten retourneren:

  • String, retourneert de tekenreeksrepresentatie van het object

toJSON

Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.

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

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat