Objecte objecte incorporat

Object SandBox

Objecte sandbox de seguretat, utilitzat per gestionar un espai operatiu independent

Tot el codi s’executa en el seu propi sandbox, el requeriment global cridarà al sandbox actual per carregar el mòdul i el sandbox es passarà al sandbox carregat mitjançant require. L'exemple següent crea un sandbox i restringeix l'accés al mòdul bàsic globalassert Mòdul i afegiu dos mòduls personalitzats, a i 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');

Herència

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<this>SandBox|new SandBox()|global;modules|add();addScript();remove();has();clone();freeze();refresh();run();resolve();require();setModuleCompiler()] [object] <:- [SandBox] SandBox new SandBox() global modules add() addScript() remove() has() clone() freeze() refresh() run() resolve() require() setModuleCompiler() object toString() toJSON()

Constructor

SandBox

Construïu un nou objecte sandbox de seguretat i inicialitzeu el mòdul bàsic

1
new SandBox(Object mods);

Paràmetres de trucada:

  • mods: Objecte, especifiqueu el diccionari d'objectes del mòdul que voleu afegir

Construïu un nou objecte sandbox de seguretat i inicialitzeu el mòdul bàsic

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

Paràmetres de trucada:

  • mods: Objecte, especifiqueu el diccionari d'objectes del mòdul que voleu afegir
  • require: Funció, funció personalitzada que requereix, quan el mòdul no existeix, truqueu primer a la funció personalitzada i després carregueu-la des del fitxer sense tornar

Construeix un nou objecte de seguretat global independent de seguretat i inicialitza el mòdul bàsic

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

Paràmetres de trucada:

  • mods: Objecte, especifiqueu el diccionari d'objectes del mòdul que voleu afegir
  • global: Objecte, especifiqueu la propietat global inicialitzada

Construeix un nou objecte de seguretat global independent de seguretat i inicialitza el mòdul bàsic

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

Paràmetres de trucada:

  • mods: Objecte, especifiqueu el diccionari d'objectes del mòdul que voleu afegir
  • require: Funció, funció personalitzada que requereix, quan el mòdul no existeix, truqueu primer a la funció personalitzada i després carregueu-la des del fitxer sense tornar
  • global: Objecte, especifiqueu la propietat global inicialitzada

Atributs de membre

global

Objecte, consulta sandbox global Objecte

1
readonly Object SandBox.global;

modules

Objecte, consulteu l'objecte de diccionari de tots els mòduls existents al sandbox

1
readonly Object SandBox.modules;

Funció de membre

add

Afegiu un mòdul bàsic al sandbox

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

Paràmetres de trucada:

  • id: Cadena, especifiqueu el nom del mòdul que voleu afegir, aquest camí no té res a veure amb l'script en execució actual, ha de ser un camí d'accés absolut o un nom de mòdul
  • mod: Valor, especifiqueu l'objecte del mòdul que voleu afegir

Afegiu un conjunt de mòduls bàsics al sandbox

1
SandBox.add(Object mods);

Paràmetres de trucada:

  • mods: Objecte, especifiqueu el diccionari d'objectes del mòdul que s'afegirà, el mòdul javascript afegit generarà una còpia per evitar la interferència d'objectes de modificació de sandbox

addScript

Afegiu un mòdul de script a la zona de proves

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

Paràmetres de trucada:

  • srcname: Cadena, especifiqueu el nom de l'script que voleu afegir, srcname ha d'incloure l'extensió, com ara json O js, jsc
  • script: Buffer, Especifiqueu el codi binari que voleu afegir

Resultat de retorn:

  • Value, Retorna l'objecte del mòdul carregat

remove

Suprimiu el mòdul bàsic especificat del sandbox

1
SandBox.remove(String id);

Paràmetres de trucada:

  • id: Cadena, especifiqueu el nom del mòdul a suprimir, aquest camí no té res a veure amb l'script en execució actual, ha de ser un camí d'accés absolut o un nom de mòdul

has

Detectar l’existència del mòdul bàsic de la caixa de sorra

1
Boolean SandBox.has(String id);

Paràmetres de trucada:

  • id: Cadena, especifiqueu el nom del mòdul a detectar, aquest camí no té res a veure amb l'script en execució actual, ha de ser un camí d'accés absolut o un nom de mòdul

Resultat de retorn:

  • Boolean, existeix

clone

Copieu el sandbox actual, el sandbox nou conté els mòduls del sandbox actual, amb el mateix nom i requereixen funció

1
SandBox SandBox.clone();

Resultat de retorn:

  • SandBox, S'ha copiat el sandbox nou

freeze

Congelar el sandbox actual, el sandbox després de la congelació, a la dreta global Les modificacions realitzades seran ignorades

1
SandBox.freeze();

refresh

Torneu a carregar el mòdul al sandbox, aquesta operació només reiniciarà el mòdul, restablirà les variables del mòdul i no actualitzarà el codi del mòdul

1
SandBox.refresh();

run

Executeu un script

1 2
SandBox.run(String fname, Array argv = []);

Paràmetres de trucada:

  • fname: Cadena, especifiqueu el camí de l’escript que s’executarà, aquest camí no té res a veure amb l’escript en execució actual, ha de ser un camí de ruta absolut
  • argv: Array, especifiqueu el paràmetre que s'executarà; aquest paràmetre es pot obtenir mitjançant argv a l'script

resolve

Consulteu un mòdul i torneu el nom complet del fitxer

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

Paràmetres de trucada:

  • id: Cadena, especifiqueu el nom del mòdul a carregar
  • base: Cadena, especifiqueu el camí de cerca

Resultat de retorn:

  • String, Torneu el nom complet del fitxer del mòdul carregat

require

Carregueu un mòdul i torneu l'objecte del mòdul

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

Paràmetres de trucada:

  • id: Cadena, especifiqueu el nom del mòdul a carregar
  • base: Cadena, especifiqueu el camí de cerca

Resultat de retorn:

  • Value, Retorna l'objecte del mòdul carregat

setModuleCompiler

Afegiu un compilador a l'extname especificat, extname no pot ser l'extensió integrada del sistema (inclosa ('.js', '.json','. jsc ','. wasm '}), el compilador ha de retornar un script javascript vàlid.

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

Paràmetres de trucada:

  • extname: La cadena, el nom d'ext especificat, ha de començar per '.' I és una extensió integrada que no és del sistema
  • compiler: Funció, compileu la funció de devolució de trucada, tots els fitxers amb extname només necessitaran una vegada. El format de la funció de devolució de trucada és compiler(buf, requireInfo), buf és el fitxer llegitBuffer, l'estructura de requireInfo és {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({}); // 编译 typescript 脚本为 js 并加载 sbox.setModuleCompiler('.ts', tsCompiler); var mod_ts = sbox.require('./a.ts'); // 编译 coffee 脚本为 js 并加载 sbox.setModuleCompiler('.coffee', cafeCompiler); var mod_coffee = sbox.require('./a.coffee'); // 编译 jsx 脚本为 js 并加载 sbox.setModuleCompiler('.jsx', reactCompiler); var mod_react = sbox.require('./a.jsx'); // 编译 yml 脚本为自定义的内容(如 API 集合) 并加载 sbox.setModuleCompiler('.yml', yaml2Rest) sbox.setModuleCompiler('.yaml', yaml2Rest) // 编译 markdown 为自定义的内容(如 html 字符串或 XmlDocument 对象) 并加载 sbox.setModuleCompiler('.md', mdCompiler) sbox.setModuleCompiler('.markdown', mdCompiler)

toString

Retorna la representació de cadena de l'objecte, generalment retorna "[Objecte natiu]", l'objecte es pot tornar a implementar segons les seves pròpies característiques

1
String SandBox.toString();

Resultat de retorn:

  • String, Retorna la representació de cadena de l'objecte

toJSON

Retorna la representació en format JSON de l'objecte, generalment retorna una col·lecció d'atributs llegibles definits per l'objecte

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

Paràmetres de trucada:

  • key: Cadena, sense utilitzar

Resultat de retorn:

  • Value, Retorna un valor que conté JSON serialitzable