개체 내장 개체

개체 샌드 박스

독립적 인 운영 공간을 관리하는 데 사용되는 보안 샌드 박스 개체

모든 코드는 자체 샌드 박스에서 실행되고 전역 요구 사항은 모듈을로드하기 위해 현재 샌드 박스를 호출하며 샌드 박스는 require를 통해로드 된 샌드 박스로 전달됩니다. 다음 예제에서는 샌드 박스를 만들고 전역 기본 모듈에 대한 액세스를 제한합니다.assert 모듈을 열고 두 개의 사용자 지정 모듈 a 및 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');

계승

#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()

건설자

SandBox

새 보안 샌드 박스 객체를 생성하고 기본 모듈을 초기화합니다.

1
new SandBox(Object mods);

호출 매개 변수 :

  • mods: Object, 추가 할 모듈 객체 사전 지정

새 보안 샌드 박스 객체를 생성하고 기본 모듈을 초기화합니다.

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

호출 매개 변수 :

  • mods: Object, 추가 할 모듈 객체 사전 지정
  • require: 함수, 사용자 정의 필요 함수, 모듈이없는 경우 먼저 사용자 정의 함수를 호출 한 다음 반환하지 않고 파일에서로드

새로운 독립 글로벌 보안 샌드 박스 객체를 생성하고 기본 모듈을 초기화합니다.

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

호출 매개 변수 :

  • mods: Object, 추가 할 모듈 객체 사전 지정
  • global: Object, 초기화 된 Global 속성 지정

새로운 독립 글로벌 보안 샌드 박스 객체를 생성하고 기본 모듈을 초기화합니다.

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

호출 매개 변수 :

  • mods: Object, 추가 할 모듈 객체 사전 지정
  • require: 함수, 사용자 정의 필요 함수, 모듈이없는 경우 먼저 사용자 정의 함수를 호출 한 다음 반환하지 않고 파일에서로드
  • global: Object, 초기화 된 Global 속성 지정

회원 속성

global

개체, 쿼리 샌드 박스 global 목적

1
readonly Object SandBox.global;

modules

개체, 샌드 박스에있는 모든 기존 모듈의 사전 개체를 쿼리합니다.

1
readonly Object SandBox.modules;

회원 기능

add

샌드 박스에 기본 모듈 추가

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

호출 매개 변수 :

  • id: 문자열, 추가 할 모듈 이름을 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없습니다. 절대 경로 또는 모듈 이름이어야합니다.
  • mod: 값, 추가 할 모듈 객체 지정

샌드 박스에 기본 모듈 세트 추가

1
SandBox.add(Object mods);

호출 매개 변수 :

  • mods: 객체, 추가 할 모듈 객체 사전을 지정합니다. 추가 된 javascript 모듈은 샌드 박스 수정 객체의 간섭을 피하기 위해 복사본을 생성합니다.

addScript

샌드 박스에 스크립트 모듈 추가

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

호출 매개 변수 :

  • srcname: 문자열, 추가 할 스크립트의 이름을 지정합니다. srcname에는 다음과 같은 확장자가 포함되어야합니다. json 또는 js, jsc
  • script: Buffer, 추가 할 바이너리 코드 지정

반환 결과 :

  • Value,로드 된 모듈 객체를 반환

remove

샌드 박스에서 지정된 기본 모듈 삭제

1
SandBox.remove(String id);

호출 매개 변수 :

  • id: 문자열, 삭제할 모듈의 이름을 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없습니다. 절대 경로 또는 모듈 이름이어야합니다.

has

샌드 박스에서 기본 모듈의 존재 감지

1
Boolean SandBox.has(String id);

호출 매개 변수 :

  • id: 문자열, 감지 할 모듈의 이름을 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없습니다. 절대 경로 또는 모듈 이름이어야합니다.

반환 결과 :

  • Boolean, 존재합니까?

clone

현재 샌드 박스를 복사합니다. 새 샌드 박스에는 이름이 같고 기능이 필요한 현재 샌드 박스의 모듈이 포함됩니다.

1
SandBox SandBox.clone();

반환 결과 :

  • SandBox, 복사 된 새 샌드 박스

freeze

현재 샌드 박스, 동결 후 샌드 박스를 동결합니다. global 수정 사항은 무시됩니다.

1
SandBox.freeze();

refresh

샌드 박스에서 모듈을 다시로드합니다.이 작업은 모듈을 다시 초기화하고 모듈의 변수를 재설정하며 모듈 코드를 업데이트하지 않습니다.

1
SandBox.refresh();

run

스크립트 실행

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

호출 매개 변수 :

  • fname: 문자열, 실행할 스크립트 경로를 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없습니다. 절대 경로 여야합니다.
  • argv: 배열, 실행할 매개 변수를 지정합니다.이 매개 변수는 스크립트에서 argv를 사용하여 얻을 수 있습니다.

resolve

모듈을 쿼리하고 모듈의 전체 파일 이름을 반환합니다.

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

호출 매개 변수 :

  • id: 문자열,로드 할 모듈 이름 지정
  • base: 문자열, 검색 경로 지정

반환 결과 :

  • String,로드 된 모듈의 전체 파일 이름을 반환합니다.

require

모듈을로드하고 모듈 객체를 반환합니다.

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

호출 매개 변수 :

  • id: 문자열,로드 할 모듈 이름 지정
  • base: 문자열, 검색 경로 지정

반환 결과 :

  • Value,로드 된 모듈 객체를 반환

setModuleCompiler

지정된 extname에 컴파일러를 추가합니다. extname은 시스템 기본 제공 확장 (( '.js', '포함)이 될 수 없습니다.json','. jsc ','. wasm '}), 컴파일러는 유효한 자바 스크립트 스크립트를 반환해야합니다.

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

호출 매개 변수 :

  • extname: 지정된 extname 인 문자열은 '.'로 시작해야하며 비 시스템 내장 확장입니다.
  • compiler: 함수, 콜백 함수 컴파일, extname이있는 모든 파일은 한 번만 필요합니다. 콜백 함수의 형식은 compiler(buf, requireInfo), buf는 읽기 파일입니다.Buffer, 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({}); // 编译 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

객체의 문자열 표현을 반환합니다. 일반적으로 "[Native Object]"를 반환합니다. 객체는 자체 특성에 따라 다시 구현 될 수 있습니다.

1
String SandBox.toString();

반환 결과 :

  • String, 객체의 문자열 표현을 반환합니다.

toJSON

객체의 JSON 형식 표현을 반환하고 일반적으로 객체가 정의한 읽을 수있는 속성 모음을 반환합니다.

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

호출 매개 변수 :

  • key: 문자열, 미사용

반환 결과 :

  • Value, 직렬화 가능한 JSON이 포함 된 값을 반환합니다.