本文整理匯總了TypeScript中vm.Script.runInContext方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Script.runInContext方法的具體用法?TypeScript Script.runInContext怎麽用?TypeScript Script.runInContext使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類vm.Script
的用法示例。
在下文中一共展示了Script.runInContext方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: TemplateToData
public static TemplateToData(template: any) {
// 數據模板 template 中可能含有攻擊代碼,例如死循環,所以在沙箱中生成最終數據
// https://nodejs.org/dist/latest-v7.x/docs/api/vm.html
const sandbox = { Mock, template, data: {} }
const script = new vm.Script('data = Mock.mock(template)')
const context = new vm.createContext(sandbox) // eslint-disable-line new-cap
try {
script.runInContext(context, { timeout: 1000 }) // 每次 Mock.mock() 最多執行 1s
// DONE 2.1 __root__
let data: any = sandbox.data
let keys = Object.keys(data)
if (keys.length === 1 && keys[0] === '__root__') data = data.__root__
return data
} catch (err) {
console.error(err)
return {}
}
}
示例2:
/// vm tests : https://nodejs.org/api/vm.html
////////////////////////////////////////////////////
namespace vm_tests {
{
const sandbox = {
animal: 'cat',
count: 2
};
const context = vm.createContext(sandbox);
console.log(vm.isContext(context));
const script = new vm.Script('count += 1; name = "kitty"');
for (let i = 0; i < 10; ++i) {
script.runInContext(context);
}
console.log(util.inspect(sandbox));
vm.runInNewContext('count += 1; name = "kitty"', sandbox);
console.log(util.inspect(sandbox));
}
{
const sandboxes = [{}, {}, {}];
const script = new vm.Script('globalVar = "set"');
sandboxes.forEach((sandbox) => {
script.runInNewContext(sandbox);
示例3: runScript
// TS infers the return type to be `any`, since that's what `runInContext`
// returns.
runScript(script: Script) {
if (this.context) {
return script.runInContext(this.context);
}
return null;
}