define,require的基本用法

时间:2024-11-16 18:00:05

id:指定义中模块的名字,可选;如果没有提供该参数,模块的名字应该默认为模块加载器请求的指定脚本的名字。如果提供了该参数,模块名必须是“*”的和绝对的(不允许相对名字)。

依赖dependencies:是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。
依赖参数是可选的,如果忽略此参数,它应该默认为["require", "exports", "module"]。然而,如果工厂方法的长度属性小于3,加载器会选择以函数的长度属性指定的参数个数调用工厂方法。

工厂方法factory,模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值。

模块名的格式

模块名用来唯一标识定义中模块,它们同样在依赖性数组中使用:

模块名是用正斜杠分割的有意义单词的字符串
单词须为驼峰形式,或者"."".."
模块名不允许文件扩展名的形式,如“.js”
模块名可以为 "相对的""*的"。如果首字符为“.”或“..”则为相对的模块名
*的模块名从根命名空间的概念模块解析
相对的模块名从 "require" 书写和调用的模块解析




<script src="http:///oye/resource/js/oye/"></script>

<script>
//定义一个模块"app/basic",它依赖另一个模块"util"
/*
如果在模块定义体中需要用到依赖模块,则模块定义体应该是固定的方式
即,使用闭包的方式进行模块实体定义,从而可以对依赖模块进行调用
*/
define('app/basic', ['util'], function(util){
//定义app/basic模块实体
var ret = {
isString: function(str){
//对依赖模块的调用
return (str);
}
};
//返回模块实体的定义
return ret;
});
//定义一个没有依赖的模块"util",它的实体可以是任意形式,比如,直接就是一个Object对象
define('util', {
isString: function(str){
return str&&typeof str==='string';
}
});
//现在要在页面上使用模块"app/basic",有两种回调方式
//方式1
require('app/basic', function(basic){
alert(('hello,world'));
});
//方式2
require('app/basic').todo(function(basic){
alert(('hello,world'));
});
/*
如果想要和结合起来用,可以有两种方式:
1.在中进行 require
2.在require的callback中绑定到,考虑到异步情形下的require,callback执行时已经触发过了,所以,可以设定一个的flag进行判断
*/
</script>