seajs是一个非常流行的模块开发引擎,目前项目中使用比较多,为了深入了解已经改进seajs我阅读了他的源码,希望对自己的代码生涯能有所启发。
本文说介绍的是指seajs2.3.3版本。
首先seajs的源编码结构如下:
intro.js 闭包结构的前半部分(类似于左括号)
sea.js 版本和全局变量
util-lang.js 类型语言增强
util-events.js 自定义事件
util-deps.js 依赖提取
util-path.js 路径处理
util-request.js url请求模块
config.js 配置模块
module.js 核心模块 包模块
outro.js 闭包后半部分(类似于右括号)
其中intro.js 和outro.js把其他文件包在一个闭包环境内从而避免影响其他全局变量,在调试的时候可以依次引入以上文件,调试时,注释掉intro.js和outro.js即可。
sea.js 设置了全局变量seajs和data,版本号等等
util-lang.js对类型的判断进行了增强,可以更方便的判断对象类型
util-events.js一个小型事件处理器,在后面会用到,可以为对象添加事件,监控事件并触发回调函数
util-deps.js一个依赖提取器,可以将一段代码中require到的模块提取出来,就是分析一段代码中的依赖模块
util-path.js路径处理器,对模块的唯一ID,也就是路径进行各种处理,包括添加js,css等后缀,别名,变量的解析设置,添加跟路径等等
util-request.js动态代码加载器,对指定的js或css url进行动态加载
config.js配置方法,通过这些方法可以对seajs进行配置
module.js 包模块,定义了包的对象,包的基本方法等等
后面会对这些源码进行逐一分析。