requirejs源码分析: requirejs 方法–1. 主入口
2016-07-17 09:58
369 查看
该方法是 主要的入口点 也是最常用的方法。
req = requirejs = function (deps, callback, errback, optional) {
//Find the right context, use default
var context, config,
contextName = defContextName;
//这里判断当前的require是否为config请求
//deps不是数组 和 字符串时。
//将第一个参数设置为config
// Determine if have config object in the call.
if (!isArray(deps) && typeof deps !== 'string') {
// deps is a config object
config = deps;
if (isArray(callback)) {
// Adjust args if there are dependencies
deps = callback;
callback = errback;
errback = optional;
} else {
deps = [];
}
}
//自定义配置文件的语法上下文 名称
if (config && config.context) {
contextName = config.context;
}
//不存在 上下文时,生成一个上下文实例
context = getOwn(contexts, contextName);
if (!context) {
context = contexts[contextName] = req.s.newContext(contextName);
}
//当前为配置信息请求时,
//对信息的初始化
if (config) {
context.configure(config);
}
return context.require(deps, callback, errback);
};
该方法代码比较短。 但 内容里的 调用的方法 是比较复杂的。
主要流程:
1. 创建 上下文 实例。
每一个请求都会有一个 上下文 实例,可以理解为封装到一个对象里,进行统一管理。
2. 利用 上一步 生成的 上下文 实例, 加载模块。
部分源码分析:
1.
这里主要是配置信息进行初始化处理。baseUrl,shim 加工补充等。
其他:
1. 第一个参数如果 非数组或字符串, 将判断当前的 请求 是 配置文件请求。
req = requirejs = function (deps, callback, errback, optional) {
//Find the right context, use default
var context, config,
contextName = defContextName;
//这里判断当前的require是否为config请求
//deps不是数组 和 字符串时。
//将第一个参数设置为config
// Determine if have config object in the call.
if (!isArray(deps) && typeof deps !== 'string') {
// deps is a config object
config = deps;
if (isArray(callback)) {
// Adjust args if there are dependencies
deps = callback;
callback = errback;
errback = optional;
} else {
deps = [];
}
}
//自定义配置文件的语法上下文 名称
if (config && config.context) {
contextName = config.context;
}
//不存在 上下文时,生成一个上下文实例
context = getOwn(contexts, contextName);
if (!context) {
context = contexts[contextName] = req.s.newContext(contextName);
}
//当前为配置信息请求时,
//对信息的初始化
if (config) {
context.configure(config);
}
return context.require(deps, callback, errback);
};
该方法代码比较短。 但 内容里的 调用的方法 是比较复杂的。
主要流程:
1. 创建 上下文 实例。
context = contexts[contextName] = req.s.newContext(contextName);
每一个请求都会有一个 上下文 实例,可以理解为封装到一个对象里,进行统一管理。
2. 利用 上一步 生成的 上下文 实例, 加载模块。
return context.require(deps, callback, errback);
部分源码分析:
1.
if (config) {
context.configure(config);
}
context.configure(config);
}
这里主要是配置信息进行初始化处理。baseUrl,shim 加工补充等。
其他:
1. 第一个参数如果 非数组或字符串, 将判断当前的 请求 是 配置文件请求。
相关文章推荐
- uses-feature之android:required
- PHP empty()函数:Can't use method return value in write context
- requirejs源码分析: define 方法
- Longest Increasing Subsequence -- Leetcode
- UI系列网站
- Codeforces 691E Xor-sequences(矩阵快速幂)
- iOS开发拓展篇—UIDynamic(捕捉行为)
- PHP生成GUID的函数
- requirejs源码分析: config中shim
- LeetCode 62. Unique Paths
- LeetCode 375. Guess Number Higher or Lower II
- 图片轮播(BannerView)
- 第十一次课总结(下篇)
- Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
- ueditor的图片上传(jsp)
- EasyUI 基础组件
- EasyUI 基础组件
- EasyUI 基础组件
- poj 3481 Double Queue
- Leetcode题解 303. Range Sum Query - Immutable