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

发布于 2022-09-11 20:09:31 字数 869 浏览 10 评论 0

场景:有一段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会更好

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北方。的韩爷 2022-09-18 20:09:31

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

如果没有你 2022-09-18 20:09:31

引入babel-polyfill垫片

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文