什么时候应该使用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():方法用于定义在多个位置使用的模块(重用)。