객체 내장 객체

객체 샌드 박스

독립 실행 공간을 관리하는 데 사용되는 보안 샌드 박스 객체

모든 코드는 자체 샌드 박스에서 실행되며 전역 요구는 현재 샌드 박스로드 모듈을 호출하고 샌드 박스는 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');

계승

건설자

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, 초기화 된 전역 속성을 지정합니다

독립적 인 글로벌 새 보안 샌드 박스 객체를 구성하고 기본 모듈을 초기화

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

통화 매개 변수 :

  • mods : Object, 추가 할 모듈 객체 사전을 지정합니다.
  • require : 함수, 사용자 정의 함수 필요 모듈이 존재하지 않으면 먼저 사용자 정의 함수를 호출 한 후 리턴하지 않고 파일에서로드하십시오.
  • global : Object, 초기화 된 전역 속성을 지정합니다

회원 속성

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 : 객체, 추가 할 모듈 객체 사전 지정, 추가 된 자바 스크립트 모듈은 샌드 박스 수정 객체로 인한 상호 간섭을 피하기 위해 사본을 생성합니다.

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 : String, 실행할 스크립트 경로를 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없으며 절대 경로 여야합니다.
  • argv : Array, 실행할 매개 변수를 지정합니다.이 매개 변수는 스크립트에서 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 '포함)이 될 수 없으며, 유효한 JavaScript 스크립트를 리턴해야합니다.

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

통화 매개 변수 :

  • extname : String, 지정된 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 직렬화 가능을 포함하는 값을 리턴합니다.