最近几天我一直在玩requirejs。我想了解定义和要求之间的区别。什么时候应该使用require()以及何时使用define()?
Define似乎允许模块分离并允许依赖性排序被遵守。但它会下载所需的所有文件。虽然只需要在需要时加载所需的东西。
这两个可以一起使用,并为他们每个人使用的目的?
最近几天我一直在玩requirejs。我想了解定义和要求之间的区别。什么时候应该使用require()以及何时使用define()?
Define似乎允许模块分离并允许依赖性排序被遵守。但它会下载所需的所有文件。虽然只需要在需要时加载所需的东西。
这两个可以一起使用,并为他们每个人使用的目的?
With define
您在require.js中注册了一个模块,然后您可以依赖其他模块定义或需要语句。 使用require
您只需加载/使用可由require.js加载的模块或JavaScript文件。 对于例子看看在documentation
我的经验法则:
定义:如果你要声明一个模块应用程序的其它部分将取决于。
要求:如果你只是想加载和使用的东西。
从require.js source code(线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和所需的模块的阵列的串)和一个必需的参数(工厂方法)。
工厂方法的返回必须返回您的模块的实现(以与Module Pattern相同的方式)。
require()
函数不必返回新模块的实现。
使用define()
你问像“跑,我作为参数传递的功能,并指定任何返回给我传球,但是,之前的ID,检查这些依赖加载”。
使用require()
你说像“我通过具有以下依存关系的功能,检查这些依赖运行前加载”。
require()
函数是您使用您定义的模块的地方,以确保模块已定义,但您并未在其中定义新模块。
“定义”方法用于促进模块定义 和 “规定”,用于处理依赖装载
定义用于基于使用以下签名的提议以限定指定或未指定的模块方法:
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
另一方面要求通常用于在顶级JavaScript文件或模块内加载代码,如果您希望动态获取相关性
有关更多信息,请参阅https://addyosmani.com/writing-modular-js/。
require()和define()都用来加载依赖关系。这两种方法之间有一个主要区别。
它非常简单,大家好
要求()方法用于立即运行功能。 define():方法用于定义在多个位置使用的模块(重用)。
对于在define'd模块内使用require还是在外部使用require有任何区别?如果在模块内部使用它,为什么不直接在模块定义中设置需求而不是使用require? – Petri 2014-01-28 06:48:33
为什么这个答案如此不同于我在这里阅读的http://requirejs.org/docs/api.html#deffunc ?? – 2014-02-13 18:44:02
@Petri,听起来像你看到RequireJS的异步加载模块的版本2行为。 “RequireJS 2.0不会执行模块的工厂函数(该函数传递给'define()'),直到有一个要求([])'调用请求它或者依赖于它的东西。” https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#delayed – alxndr 2014-08-18 16:55:17