RequireJS 和 require('xxx') 有什么关系吗?
我们知道在node.js中是可以直接使用require()来引入模块的。说明node.js中的话,require是内置的。如果RequireJS提供了require()方法,那么一般我们还经常看到RequireJS,这个有什么额外的用处吗?
RequireJS 和 require('xxx') 有什么关系吗?
我们知道在node.js中是可以直接使用require()来引入模块的。说明node.js中的话,require是内置的。如果RequireJS提供了require()方法,那么一般我们还经常看到RequireJS,这个有什么额外的用处吗?
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
简短解释:
RequireJS
是十多年前JS还缺少模块系统时的产物,方便在浏览器项目里管理JS的依赖和加载。随着ES Modules
规范的推出,流行前端打包工作流(比如webpack
、rollup
、esbuild
)之后,RequireJS
已经不再流行,很少在新项目里使用了。RequireJS
是异步模块加载器的一个实现,主要是给浏览器环境里用的。因为浏览器通过网络
加载js文件,不像node.js通过硬盘
加载那样快速稳定,所以需要使用异步方式来加载。这就出现了不同于node.js的CommonJS
的模块规范,也就是异步模块(Asynchronous Module Definition
,简称AMD
)。CommonJS
的模块是这样的:AMD
的模块是这样的:有时候我们想让一个模块能同时在两个环境里使用,于是就有了
UMD
规范:看到上面这么多代码,不要被吓到了,因为我们现在有前端打包工作流,可以自动生成以上代码,不需要自己手写。
我们现在应该使用
ES Modules
。ES Modules
是JS的模块规范,浏览器已经原生支持,还能借助工具转译成其他规范,能适应更多场景。