日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Node.js教程:Node.js虛擬機(jī)
穩(wěn)定性: 3 - 穩(wěn)定

本節(jié)介紹了node.js的虛擬機(jī)(VM)模塊,該模塊提供了用于在V8虛擬機(jī)上下文中編譯和運(yùn)行代碼的API。

創(chuàng)新互聯(lián)公司主營陵水黎族網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,陵水黎族h5微信小程序開發(fā)搭建,陵水黎族網(wǎng)站營銷推廣歡迎陵水黎族等地區(qū)企業(yè)咨詢

可以通過以下方法訪問該模塊:

var vm = require('vm');

JavaScript 可以立即編譯立即執(zhí)行,也可以編譯,保存,之后再運(yùn)行。

vm.runInThisContext(code[, options])

vm.runInThisContext()對參數(shù)code編譯,運(yùn)行并返回結(jié)果。運(yùn)行的代碼沒有權(quán)限訪問本地作用域(local scope),但是可以訪問全局對象。

使用vm.runInThisContexteval方法運(yùn)行同樣代碼的例子:

var localVar = 'initial value';

var vmResult = vm.runInThisContext('localVar = "vm";');
console.log('vmResult: ', vmResult);
console.log('localVar: ', localVar);

var evalResult = eval('localVar = "eval";');
console.log('evalResult: ', evalResult);
console.log('localVar: ', localVar);

// vmResult: 'vm', localVar: 'initial value'
// evalResult: 'eval', localVar: 'eval'

vm.runInThisContext沒有訪問本地作用域,所以沒有改變localVar。eval范圍了本地作用域,所以改變了localVar。

vm.runInThisContext用起來很像間接調(diào)用eval,比如(0,eval)('code')。但是,vm.runInThisContext也包含以下選項(xiàng):

  • filename: 允許更改顯示在站追蹤(stack traces)的文件名。
  • displayErrors: 是否在stderr上打印錯誤,拋出異常的代碼行高亮顯示。會捕獲編譯時的語法錯誤,和執(zhí)行時拋出的錯誤。默認(rèn)為true。
  • timeout: 中斷前代碼執(zhí)行的毫秒數(shù)。如果執(zhí)行終止,將會拋出錯誤。

vm.createContext([sandbox])

如果參數(shù)sandbox不為空,調(diào)用vm.runInContextscript.runInContext時可以調(diào)用沙箱的上下文。以此方式運(yùn)行的腳本,sandbox是全局對象,它保留自己的屬性同時擁有標(biāo)準(zhǔn)全局對象(global object)擁有的內(nèi)置對象和函數(shù)。

如果參數(shù)sandbox對象為空,返回一個可用的新且空的上下文相關(guān)的沙盒對象。

這個函數(shù)對于創(chuàng)建一個可運(yùn)行多腳本的沙盒非常有用。比如,在模擬瀏覽器的時候可以使用該函數(shù)創(chuàng)建一個用于表示window全局對象的沙箱,并將所有