何时使用require()和define()?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (4)
  • 关注 (0)
  • 查看 (210)

在过去的几天里,我一直在摆弄requirejs。我想理解定义和要求之间的区别。

定义似乎允许模块分离,并允许依赖项排序。但是它下载了所有需要开始的文件。当你需要的时候,只需要加载你需要的东西。

这两者可以一起使用吗?它们各自的用途是什么?

提问于
用户回答回答于

带着define您可以将一个模块注册在requ.js中,然后可以在其他模块定义或Required语句中依赖该模块。带着require“只是”加载/使用一个模块或javascript文件,该文件可以由requ.js加载。

我的经验:

  • 定义:如果您想要声明一个模块,您的应用程序的其他部分将依赖于此。
  • 要求:如果你只想加载或使用东西。
用户回答回答于

两者都用于加载依赖项。这两种方法有很大的区别。

Require() : 用于运行即时功能。

Define() : 用于定义在多个位置使用的模块(重用)。

用户回答回答于

“定义”方法以方便模块定义和“需要”处理依赖加载的方法。

定义用于定义基于该建议的命名或未命名模块,使用以下签名:

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

另一方面,需要通常用于在顶级JavaScript文件中或模块内加载代码,以动态获取依赖关系。

用户回答回答于

来自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和所需模块数组的字符串)和一个必需参数(工厂方法)。

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

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

使用define()你问的是“运行作为参数传递的函数,并将任何返回都分配给我要传递的ID,但在此之前,请检查是否加载了这些依赖项”...

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

require()函数是使用您定义的模块的地方,以确保定义了模块,但您没有在那里定义新模块。

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问4 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券