鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 為什么Webpack生成JavaScript代碼要引入eval模式

為什么Webpack生成JavaScript代碼要引入eval模式

最近在看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還是要引入這樣一種代碼生成機制,它究竟有什么好處?

回答
編輯回答
筱饞貓

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

真正被詬病的不是eval,而且eval的濫用。如果你確認拿到的代碼是你自己的(或任何你信任的),用eval是完全可以接受的,而且可以享受到速度快的好處。

2018年2月16日 21:16
編輯回答
挽青絲

贊同代碼宇宙的答案,js還有一個不建議使用的關(guān)鍵詞是with,但是vue源碼中模板渲染那里就有用with,這樣確實讓代碼看起來更簡單,更清晰。eval也是同理,避免濫用,但是你可以確定的地方使用會有更方便的體驗。

2018年3月14日 08:32