如何让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会更好
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最终解决方案,babel-polyfill+@babel/standalone。
引入babel-polyfill垫片