tes*_*dtv 29 javascript amd requirejs
在RequireJS中,使用require()Vs define();之间的基本区别是什么?
require(['a'], function(a) {
// some code
});
// A.js
define(['b','c','d','e'], function() {
//some code
});
Run Code Online (Sandbox Code Playgroud)
任何用例都会非常有用..
Kat*_*314 50
在早期使用中让我烦恼的一个核心差异是弄清楚define
可能永远不会被称为.
只要define
每个文件只有一个,它就会在该文件名下注册该模块.但是,define
只有在require
函数询问每个模块时才会加载模块.
定义:如果需要XXX,请先加载其他内容,然后返回此函数的结果.
要求:加载其他内容,然后运行此功能.(没有"如果")
示例:假设您在页面中包含此JS文件:
// this is in company/welcomepage.js
define(['company/ui_library'],
function(uiLib) {
console.log('Welcome to {company}!');
}
);
Run Code Online (Sandbox Code Playgroud)
如果这是唯一的Javascript文件,您可以打开您的页面,并且在控制台日志中没有任何内容,尽管脚本告诉它欢迎用户.但是,如果在页面中的某个位置或其他脚本中更改,则会插入以下内容:
require(['company/welcomepage'], function() {
// optionally insert some other page-initialization logic here
});
Run Code Online (Sandbox Code Playgroud)
现在,页面将在加载时在控制台中显示欢迎消息.
实际上,在第二个就位的情况下,不需要手动将welcomepage.js作为<script>
标记包含在内; 它会在看到需求后立即从其位置加载它,并意识到它需要它.
use*_*245 19
require
并且requirejs
是一样的.
require === requirejs // true
Run Code Online (Sandbox Code Playgroud)
require
是一种加载已定义模块的方法.例如,加载logger
我可以做的模块:
require(["logger"], function(logger){
logger.bla("S");
});
Run Code Online (Sandbox Code Playgroud)
我在这里调用require
,指定一个已定义的模块logger
,并通过调用其bla
方法来调用它.
define
是一种定义模块的方法.例如,定义一个logger
我可以做的模块:
// logger.js
define(function(){
return {
bla: function(x){
alert(x);
}
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,我打电话define
来定义logger
模块.在这个模块中,我返回了bla
我想要公开的函数.
有时定义看起来非常类似于导出因为define也可以依赖并使用其他模块,就像require可以使用其他模块一样.让我向您展示相同的logger
模块,这次使用模块
// logger.js
define(["popup"], function(popup){
return {
bla: function(x){
popup.show(x);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这里记录器模块I defined
也有一个被调用的依赖popup
,因此它看起来像require
.
归档时间: |
|
查看次数: |
21996 次 |
最近记录: |