亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

node.js 動態執行腳本

2019-11-20 09:49:17
字體:
來源:轉載
供稿:網友

node.js最近新增了虛擬機模塊,其實也不能說是新增的,只是把一些內部接口暴露出來罷了,從2.x就有了。我們可以從node / src / node.js看到這些代碼:

var Script = process.binding('evals').NodeScript;var runInThisContext = Script.runInThisContext;  NativeModule.wrap = function(script) {  return NativeModule.wrapper[0] + script + NativeModule.wrapper[1]; };  NativeModule.wrapper = [  '(function (exports, require, module, __filename, __dirname) { ',  '/n});' ];  NativeModule.prototype.compile = function() {  var source = NativeModule.getSource(this.id);  source = NativeModule.wrap(source);   var fn = runInThisContext(source, this.filename, true);  fn(this.exports, NativeModule.require, this, this.filename);   this.loaded = true; };

其中的Script對象,就與require('vm')返回的對象很相似,而實質上,vm模塊就是對Script對象的封裝。

var Script = process.binding('evals').NodeScript;console.log(Script)/**{ [Function: NodeScript] createContext: [Function], runInContext: [Function], runInThisContext: [Function], runInNewContext: [Function] } */console.log(require('vm')){ Script:   { [Function: NodeScript]   createContext: [Function],   runInContext: [Function],   runInThisContext: [Function],   runInNewContext: [Function] }, createScript: [Function], createContext: [Function], runInContext: [Function], runInThisContext: [Function], runInNewContext: [Function] }

其中,runInThisContext 相當于一個全新的環境中執行代碼,不會影響當前作用域的對象。而runInNewContext與runInContext則能指定是上下文對象,區別是一個普通對象或一個context對象。換言之,runInNewContext與runInContext能局部影響當前作用域的對象。要與當前環境完全進行交互的話,就需要用到危險的eval。在node.js自帶的加載體系中,顯然沒有這樣的勇氣,使用的是runInThisContext。并且在這之前做了許多工作,如把用戶的JS文件里面的內容再包一層( NativeModule.wrap),還有其他凌散操作,加之是同步操作,實際上是一種效率很糟的加載方式。唯一的好處是,使用了同步,讓代碼編寫起來簡單多了。

在github中,已有人對這幾種動態執行腳本的方法進行性能比較:

var vm = require('vm'), code = 'var square = n * n;', fn = new Function('n', code), script = vm.createScript(code), sandbox; n = 5;sandbox = { n: n }; benchmark = function(title, funk) { var end, i, start; start = new Date; for (i = 0; i < 5000; i++) {  funk(); } end = new Date; console.log(title + ': ' + (end - start) + 'ms');} var ctx = vm.createContext(sandbox);benchmark('vm.runInThisContext',   function() { vm.runInThisContext(code); });benchmark('vm.runInNewContext',   function() { vm.runInNewContext(code, sandbox); });benchmark('script.runInThisContext', function() { script.runInThisContext(); });benchmark('script.runInNewContext', function() { script.runInNewContext(sandbox); });benchmark('script.runInContext', function() { script.runInContext(ctx); });benchmark('fn',           function() { fn(n); });/**vm.runInThisContext: 212msvm.runInNewContext: 2222msscript.runInThisContext: 6msscript.runInNewContext: 1876msscript.runInContext: 44msfn: 0ms */

由此可見,還是v8自帶的方法Function完勝!

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本欧美一级片| 国产成人一区二| 国产精品久久久久久久天堂| 一本大道香蕉久在线播放29| 精品国产老师黑色丝袜高跟鞋| 91国产视频在线| 日日骚av一区| 午夜精品久久久久久久白皮肤| 欧美精品在线观看| 91黑丝在线观看| 另类美女黄大片| 久久精品国产一区| 亚洲免费一在线| 精品福利在线视频| 欧美亚洲国产日韩2020| 亚洲精品白浆高清久久久久久| 伦伦影院午夜日韩欧美限制| 久久久久99精品久久久久| 久久天天躁狠狠躁老女人| 琪琪亚洲精品午夜在线| 国产有码一区二区| 国产一区二区在线免费| 亚洲大尺度美女在线| 亚洲va久久久噜噜噜久久天堂| 欧美性受xxxx白人性爽| 国产成人+综合亚洲+天堂| 日韩精品一二三四区| 久久精品成人动漫| 国语自产精品视频在线看一大j8| 精品国产999| 久久99国产综合精品女同| 韩剧1988免费观看全集| 中文字幕av一区| 97av在线视频| 韩国精品久久久999| 欧美激情一二区| 欧美一级免费看| 亚洲在线一区二区| 国产亚洲精品久久久久久牛牛| 欧美性猛交xxxx乱大交蜜桃| 日韩国产精品一区| 色777狠狠综合秋免鲁丝| 国产日本欧美一区二区三区在线| 欧美性感美女h网站在线观看免费| 久久精品免费电影| 麻豆一区二区在线观看| 国产精品久久久久影院日本| 一区二区三区回区在观看免费视频| 亚洲精品欧美日韩专区| 精品国产精品三级精品av网址| 欧美精品福利在线| 91精品国产乱码久久久久久蜜臀| 亚洲аv电影天堂网| 久久久伊人欧美| 国产精品久久久久久超碰| 国产亚洲成av人片在线观看桃| 欧美性视频网站| 中文字幕日韩av| 亚洲成人av资源网| 欧美视频裸体精品| 精品动漫一区二区| 色妞在线综合亚洲欧美| 国产福利精品视频| 日韩欧美主播在线| 九色成人免费视频| 国产精品99蜜臀久久不卡二区| 97色在线视频| 国产欧美在线观看| 欧美亚洲国产视频小说| 国产伦精品一区二区三区精品视频| 亚洲va国产va天堂va久久| 亚洲一区二区三区成人在线视频精品| 亚洲九九九在线观看| 国产日产欧美a一级在线| 久久久久久午夜| 日韩成人在线视频网站| 国产亚洲精品综合一区91| 青草青草久热精品视频在线观看| 国产精品第10页| 国产精品久久久久久久电影| 国内免费精品永久在线视频| 日韩欧美国产成人| 日韩av电影在线网| 日韩精品小视频| 中日韩美女免费视频网址在线观看| 国内偷自视频区视频综合| 91精品国产高清久久久久久久久| 97视频免费看| 亚洲人精品午夜在线观看| 成人在线视频网站| 亚洲电影天堂av| 欧美精品videofree1080p| 国产精品自产拍在线观看| 国产欧美va欧美va香蕉在线| 热久久美女精品天天吊色| 久久久精品999| 日韩国产高清污视频在线观看| 亚洲欧美日韩在线一区| 日韩亚洲精品电影| 亚洲在线www| 国产美女精品视频免费观看| 亚洲人午夜色婷婷| 成人av在线天堂| 红桃视频成人在线观看| 亚洲尤物视频网| 国产免费一区二区三区在线能观看| 亚洲欧美综合图区| 欧美在线视频播放| 美女扒开尿口让男人操亚洲视频网站| 欧美色另类天堂2015| 久久久av亚洲男天堂| 91久久精品美女| 国产精品第一视频| 久久久久久中文| 91精品国产综合久久久久久久久| 69av成年福利视频| 国产日韩精品在线观看| 欧美疯狂做受xxxx高潮| 日韩小视频网址| 另类图片亚洲另类| 91在线直播亚洲| 青青在线视频一区二区三区| 色久欧美在线视频观看| 欧美日韩另类在线| 亚洲三级黄色在线观看| 亚洲在线一区二区| 日韩人在线观看| 精品福利在线观看| www.精品av.com| 俺也去精品视频在线观看| 久久久在线免费观看| 中文字幕精品www乱入免费视频| 第一福利永久视频精品| 国产精品欧美亚洲777777| 亚洲男子天堂网| 日本国产一区二区三区| 欧美精品一区二区免费| 欧美日韩中文字幕日韩欧美| 日韩有码在线观看| 91日本在线视频| 亚洲精品欧美一区二区三区| 国产成人精品电影久久久| 91在线视频导航| 91牛牛免费视频| 国产亚洲免费的视频看| xvideos成人免费中文版| 91啪国产在线| 97在线精品国自产拍中文| 国产精品久久久久久久久久免费| 久久夜色精品亚洲噜噜国产mv| 91久久在线播放| 日韩欧亚中文在线| 国产成人高潮免费观看精品| 亚洲国产欧美在线成人app| 最新亚洲国产精品| 国产精品99一区| 日韩免费中文字幕| 亚洲精品免费一区二区三区| 国产在线精品成人一区二区三区| 国产精品一区二区三区毛片淫片| 亚洲激情国产精品| 欧美激情三级免费| 亚洲伊人一本大道中文字幕| 欧美激情视频一区|