2022-03-18 18:06:02 +08:00

1.1 KiB
Raw Blame History

补环境

1.调试环境

2.在环境框架中直接运行某js文件补修改原js文件

自己写一个浏览器

1.BOM 浏览器实现的代码历史记录浏览器版本信息之类的
2.DOM 根据id取元素
3.网络请求 xhr jsonp
    jsonp_3213123({ayf:1})
4.跨窗口worker

目的: 运行环境

难点:如何找到缺少的那些环境,如何很好的实现环境代码

伪造:我给你啥,你能正确返回啥可以了

vm2 纯净的v8环境

https://github.com/patriksimek/vm2

var fs = require('fs');
const {VM} = require('vm2');
const vm = new VM();
var data = fs.readFileSync('./src/code.js', 'utf8')
vm.run(data)

调试沙盒代码

const {VM, VMScript} = require('vm2');
const fs = require('fs');
// 运行的code代码
const file = `${__dirname}/code.js`;

// 需要补的window环境
const windowfile = `${__dirname}/window.js`;
const vm = new VM();
const script = new VMScript(fs.readFileSync(windowfile)+fs.readFileSync(file), "我正在调试的代码");
vm.run(script);