define,require的基本用法

来源:互联网 发布:sqsxfree类似软件 编辑:程序博客网 时间:2024/05/22 15:53
id:指定义中模块的名字,可选;如果没有提供该参数,模块的名字应该默认为模块加载器请求的指定脚本的名字。如果提供了该参数,模块名必须是“顶级”的和绝对的(不允许相对名字)。依赖dependencies:是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。依赖参数是可选的,如果忽略此参数,它应该默认为["require", "exports", "module"]。然而,如果工厂方法的长度属性小于3,加载器会选择以函数的长度属性指定的参数个数调用工厂方法。工厂方法factory,模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值。

模块名的格式

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

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




<script src="http://www.w3cgroup.com/oye/resource/js/oye/oye.min.js"></script>

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