개체 내장 개체

개체 샌드 박스

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

모든 코드는 자체 샌드 박스에서 실행되고, 글로벌 요구 사항은 모듈을로드하기 위해 현재 샌드 박스를 호출하고 샌드 박스는 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, 초기화 된 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 : String, 추가 할 모듈의 이름을 지정합니다.이 경로는 현재 실행중인 스크립트와 관련이 없습니다. 절대 경로 또는 모듈 이름이어야합니다.
  • mod : Value, 추가 할 모듈 객체 지정

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

1
SandBox.add(Object mods);

호출 매개 변수 :

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

addScript

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

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

호출 매개 변수 :

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

반환 결과 :

  • Value ,로드 된 모듈 객체를 반환합니다.

remove

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

1
SandBox.remove(String id);

호출 매개 변수 :

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

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 : String,로드 할 모듈 이름 지정
  • base : 문자열, 검색 경로 지정

반환 결과 :

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

require

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

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

호출 매개 변수 :

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

반환 결과 :

  • Value ,로드 된 모듈 객체를 반환합니다.

setModuleCompiler

지정된 extname에 컴파일러를 추가하십시오. extname은 시스템 내장 확장 (( '.js', '. json ', '. jsc', '. wasm'포함)이 될 수 없습니다. 컴파일러는 유효한 javascript 스크립트를 리턴해야합니다.

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이 포함 된 값을 반환합니다.