• requirejs源码分析: requirejs 方法–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);
           }

    这里主要是配置信息进行初始化处理。baseUrl,shim 加工补充等。

    其他:

    1. 第一个参数如果 非数组或字符串, 将判断当前的 请求 是 配置文件请求。

  • 相关阅读:
    Linux自定义服务文件编写
    Ubuntu PPA方式安装vim
    ubuntu PPA使用指南
    ubuntu安装最新emacs
    Docker支持中文
    C#调用Go版DLL
    C#调用exe程序
    golang编写动态库供c#程序调用
    科学正在追赶中医,中医将变得时髦(转载)
    常见.NET功能代码汇总 (3)
  • 原文地址:https://www.cnblogs.com/chencidi/p/5677935.html
Copyright © 2020-2023  润新知