为什么Webpack生成JavaScript代码要引入eval模式

hyuan
  • 406

最近在看Webpack的生成的JavaScript,有一个疑问想不明白:为什么Webpack要提供eval的模式,将模块的generated code用eval来包裹?

这里的讨论不仅限于devtooleval,还包括eval-source-map, cheap-eval-source-map等各种包含了eval的衍生组合。如果说eval的好处是build速度快,因为它不生成source map,那类似于eval-source-map这样的呢?

所以我的疑问并不在于source map,而是eval本身。既然它如此被诟病,为什么Webpack还是要引入这样一种代码生成机制,它究竟有什么好处?

回复
阅读 7k
2 个回答

goto也被诟病,但你仍然可以在C/C++中使用goto。

真正被诟病的不是eval,而且eval的滥用。如果你确认拿到的代码是你自己的(或任何你信任的),用eval是完全可以接受的,而且可以享受到速度快的好处。

赞同代码宇宙的答案,js还有一个不建议使用的关键词是with,但是vue源码中模板渲染那里就有用with,这样确实让代码看起来更简单,更清晰。eval也是同理,避免滥用,但是你可以确定的地方使用会有更方便的体验。

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

宣传栏