什么时候应该使用require()以及何时使用define()?

过去几天我一直在玩requirejs。 我想了解定义和要求之间的区别。

Define似乎允许模块分离,并允许依赖顺序被遵守。 但它下载所有需要开始的文件。 在需要的时候只需要加载你需要的东西。

这两个可以一起使用吗?为了什么目的,每个人都可以使用?

通过define ,您可以在require.js中注册一个模块,然后您可以依赖其他模块定义或需要语句。 随着require你“只”加载/使用一个模块或JavaScript文件,可以通过require.js加载。 例如看看文档

我的经验法则:

  • 定义:如果你想声明一个模块,你的应用程序的其他部分将依赖于。

  • 要求:如果你只是想加载和使用的东西。

从require.js 源代码 (1902行):

 /** * The function that handles definitions of modules. Differs from * require() in that a string for the module should be the first argument, * and the function to execute after dependencies are loaded should * return a value to define the module corresponding to the first argument's * name. */ 

define()函数接受两个可选参数(表示模块ID和所需模块数组的string)和一个必需参数(工厂方法)。

工厂方法的返回必须返回模块的实现(与模块模式一样)。

require()函数不必返回新模块的实现。

使用define()你问的问题就像“运行我正在传递的函数作为参数,并分配任何返回到我传递的ID,但之前,检查这些依赖项加载”

使用require()你会说“我传递的函数具有以下依赖性,请检查这些依赖项是否在运行之前加载”

require()函数是你使用你定义的模块的地方,为了确保这些模块是被定义的,但是你没有在那里定义新的模块。

“define”方法用于简化模块定义,“require”方法用于处理依赖加载

define用于根据提议使用以下签名来定义已命名或未命名的模块:

 define( module_id /*optional*/, [dependencies] /*optional*/, definition function /*function for instantiating the module or object*/ ); 

另一方面要求通常用于将代码加载到顶级JavaScript文件中,或者在您希望dynamic获取依赖关系的模块中

有关更多信息,请参阅https://addyosmani.com/writing-modular-js/

require()和define()都用来加载依赖关系。这两种方法有一个主要区别。

它非常简单的家伙

Require():方法用于运行即时function。 define():方法用于定义在多个位置使用的模块(重用)。