不要混用 import 和 require

import 是 ES6 规范语法之一。而 require 属于CommonJS规范的一部分。

目前来说,使用现代浏览器还无法支持 import,一般都会搭配 babel 使用,而 babel 会把 import 转换成 CommonJS 的 require.

但是,我们不能混用 import 和 require。有时候会看下如下代码:

https://pbs.twimg.com/media/DESmTTXUMAAJcIW.jpg:large

但实际执行顺序并不是你想象或看到的那样。import 具有声明提升效果,会首先执行。所以最好 不要混用。 import 是 ES6 标准,如果可能,首先使用 import, 如果不行,就用 require。

ES6 import

  • 具有声明提升效果
  • 您可以使用命名导入来选择性地加载所需的部分。这样可以节省内存, 如:import { render } from react
  • 导入可以是异步的
  • ES6 标准

require

  • 您可以在加载的模块名称不是预定义/静态的情况下进行动态加载,或者只有在真正需要的情况下才有条件地加载模块(取决于某些代码流)
  • CommonJS 规范加载是同步的。这意味着如果你有多个require,它们将逐个加载和处理(AMD规范是可以异步的)
  • 只是约定的规范

参考:https://twitter.com/dan_abramov/status/883375646357041152

0%