如何让eval或者new Function(),支持es6语法?

场景:有一段js的代码文本,需要解析执行。如下:
下面有一段js代码文本,目的是得到 export default 的数据(String → Object

var code = `
export default {
    data () {
        return {
            msg: '点击运行按钮,即可预览效果'
        };
    }
};
`;

将上方文本稍微修改,通过eval或者new Function都能得到对应数据,如下:

code = code.replace(/export default\s+/, 'return ');
var data = (new Function(code))();

/*
code = code.slice(-1) === ';' ? code.slice(0, -1) : code;
code = code.replace(/export default\s+/, 'eval(') + ')';
var data = eval(code);
*/

// data 便是所需的数据,该例子在谷歌浏览器下可以正常执行,但是IE浏览器会因为es6语法报错
console.log(data); 

上述例子,data 便是export default语句暴露的数据,该例子在谷歌浏览器下可以正常执行,但是IE浏览器会因为es6语法报错data的作用是为了在new Vue()的时候作为mixins的数据

问题:如何让eval或者new Function(),可以支持es6语法?
如果能做到像.vue文件那样,支持require和import会更好

阅读 7.7k
2 个回答

最终解决方案,babel-polyfill+@babel/standalone。

引入babel-polyfill垫片

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题