通过 webpack 使用 ES6 Modules 能完全替代 RequireJS 吗?

接触模块化后,使用的就是webpack工具,模块的的输出输入都是用es6的export、import;
请问使用了es6后还有必要使用requirejs吗,es6能完全替代requirejs吗

阅读 6.4k
3 个回答

如果你用 webpack 就没有必要用 RequireJS 了。

原因如下:

RequireJS 是基于 AMD 规范的模块加载器,它不依赖于任何 JavaScript 新语言特性,可以直接运行在浏览器环境中。这是个比较老、曾经非常流行的模块加载器,它主要提供的功能是:

  1. 提供了模块化得支持。
  2. 可以异步、按需加载模块,这样就可以在用到某个 JS 模块的时候再去加载它,能提高首屏加载速度。

ES6 的 Modules:

  1. 提供了模块化的支持。

但是 es6 Modules 是JavaScript新特性,目前浏览器还不支持,不能直接用,就算以后可以直接用了,如果希望做到按需、异步加载的话也需要配合相应的加载器来加载 JS 文件。

但是如果你用 webpack 的话,直接用 ES6 是最好的选择。因为:

  1. webpack 可以通过 babel-loader 来转义 ES6 为浏览器可以支持的方式。
  2. webpack 的 code split 功能可以实现按需、异步加载。

是完全覆盖 RequireJS 的所有功能的。

import/export是es6推出的一种更直观方便的模块化的写法,偏向于commonJS的写法,需要编译环境。
而requireJS则是通过回调来处理模块之间的依赖,偏向于AMD的写法。

语言在不断地进化,在webpack的帮助下,我们可以更爽地写模块,但并不能说requireJS就没什么用,被替代了,只能说会用到requireJS的机会更少了一些而已

就好比过去,我们传输异步数据会用到xml,后来json被普遍接受了,但并不能说json就完全替代了xml,xml还是存在着的,只是用的少了,但不可避免,会有更适合地场景需要用到xml一样。

推荐问题
宣传栏