JavaScript定义模块

本文详细介绍了模块定义的方法,包括具名模块和匿名模块的不同定义方式及其使用场景。通过具体示例展示了如何利用define函数来声明模块及其依赖关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义模块 define a module

采用类似AMD和CommonJS的方式来定义模块,define是全局函数,基本语法如下:

define( id?, dependencies?, factory );

id,模块标识符,用来唯一标识所定义模块,只能是字符串

dependencies,模块依赖,只能是数组,且其每一项均是所依赖模块的id

factory,模块构造方法,可以是函数、对象、数组

define( id, dependencies, factory )

这是最常规的用法。当模块存在id时,则此模块为具名模块

define( 'case/a', ['case/b','case/c'], function( b, c ){
    //todo sth
} );

此场景下,称模块case/a依赖/引用模块case/b、模块case/c,模块case/b被模块case/a依赖/引用。此时,factory为函数,执行后,将得到该模块输出的接口,执行时,将会依次传入dependencies中各个id所标识的模块所输出的接口。即,b代表模块case/b输出的接口,c代表模块case/c输出的接口

具名模块只有在第一次其他模块依赖时才会执行factory并且输出接口,之后再被依赖,将直接输出接口

define( id, factory )

当模块没有任何依赖的模块,可将dependencies参数省去

define( 'case/b', function(){
    //todo sth
} );

define( id, factory<object/array> )

factory为对象或数组时,factory对象或数据即为该模块输出的接口

define( 'case/car', {
    color: 'white',
    size: 'large'
} );

define( 'case/size', ['large','normal','small'] );

define( dependencies, factory )

当不写id时,此模块则匿名模块

define( ['case/b','case/c'], function( b, c ){
    //todo sth
} );

匿名模块一经定义立即执行,因为没有其他任何模块可以通过id来依赖于它

define( factory )

匿名模块也可以省去dependencies

define(function(){
    //todo sth
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值