模块标识采用路径形式,但要注意与路径的区别。require、require.async的第一个参数是模块标识。而seajs.use第一个参数为文件路径。
use是全局的,require是局部的。模块标识在两部分工作中起了不同作用,1.在打包合并过程中起着寻找依赖及查找模块文件的作用;2.在发布后项目使用中起着标识模块的作用。
模块标识命名规则:
- 一个模块标识由斜线(
/
)分隔的多项组成。 - 每一项必须是小驼峰字符串、
.
或..
。 - 模块标识可以不包含文件后缀名,比如
.js
。 - 模块标识可以是 相对 或 顶级 标识。如果第一项是
.
或..
,则该模块标识是相对标识。 - 顶级标识根据模块系统的基础路径来解析。
- 相对标识相对
require
所在模块的路径来解析。
模块标识解析规则:
- 顶级标识始终相对
base
基础路径解析。 - 绝对路径和根路径始终相对当前页面解析。
require
和require.async
中的相对路径相对当前模块路径来解析。seajs.use
中的相对路径始终相对当前页面来解析。
seajs运行流程,1.加载seajs 2.config 3.use([path1,path2]),查找path1,path2的文件 4.解析path1,path2的文件(根据define生成模块列表,另外会将config中alias的模块加入列表)5.运行主模块代码