• seajs笔记


    1、配置

    seajs.config({});

    比较常用的就是paths、base与alias

    seajs.config({
    
      // 别名配置
      alias: {
        'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe',
        'json': 'gallery/json/1.0.2/json',
        'jquery': 'jquery/jquery/1.10.1/jquery'
      },
    
      // 路径配置
      paths: {
        'gallery': 'https://a.alipayobjects.com/gallery'
      },
    
      // Sea.js 的基础路径
      base: 'http://example.com/path/to/base/'
    });

    一般不要配置 base 路径,把 sea.js 放在合适的路径往往更简单一致。

     

    2、加载模块

    // 加载一个模块,在加载完成时,执行回调
    seajs.use('./a', function(a) {
      a.doSomething();
    });
    
    // 加载多个模块,在加载完成时,执行回调
    seajs.use(['./a', './b'], function(a, b) {
      a.doSomething();
      b.doSomething();
    });
    
    

    3、定义模块

    define(function(require, exports, module) {
      // 模块代码
    });
    模块暴露接口的三种方式:
    1)define(function(require, exports, module) {
      //exports.xxx=
    });
    
    2)define(function(require, exports, module) {
      //module.exports=
    });
    3)define(function(require, exports, module) {
      //return 
    });

    define的参数可以直接是一个字符串或者对象,如:

    define("hello world");
    define({"foo":"bar"});
    define(["foo","bar"]);

    这种情况下,暴露的接口就是字符串 对象 数组。

    4、获取模块接口

    require('./a');

    5、异步加载模块

      // 异步加载一个模块,在加载完成时,执行回调
      require.async('./b', function(b) {
        b.doSomething();
      });
    
      // 异步加载多个模块,在加载完成时,执行回调
      require.async(['./c', './d'], function(c, d) {
        c.doSomething();
        d.doSomething();
      });

    6、路径解析

    1. 顶级标识始终相对 base 基础路径解析。
    2. 绝对路径和根路径始终相对当前页面解析。
    3. require 和 require.async 中的相对路径相对当前模块路径来解析。
    4. seajs.use 中的相对路径始终相对当前页面来解析。

    seajs中,模块的ID大致可分为三种:

    相对标识:"./","../" 开头的,如:"./OtherModule", "../lib/Base"。

    顶级标识: 以文件或目录(可以包含:字母、-、_)开头的,如:"app/widget/Select"

    普通路径:包括 “绝对路径”、“根路径”,等

    一、base 路径解析规则
    (第 1 层,本身的路径不依赖于任何设置)
    1. 不可使用顶级标识,因为顶级标识就是相对于 base 基础路径来解析的,因此 base 本身只能使用相对标识或根路径等。
    2. base 默认路径为 seajs 的目录,其他情况参见seajs官网,如果不是seajs推荐的源码目录结构,尽量手动设置 base 路径。
    3. 相对标识:相对于 当前页面 解析。


    二、paths 中路径解析规则
    (第 1 层,本身的路径不依赖于任何设置)
    1. 相对标识:在哪里被引用,相对的解析位置视被引用的地方而定,遵循当地的规则。
    2. paths中的字段会被以变量的方式在被使用的地方替换,然后再解析。

    三、alias 中路径解析规则
    (第 2 层,本身的路径可以依赖于paths的设置)
    1. alias 的规则类似于 paths,并且 alias 路径也可以使用 paths 中的“变量”
    2. 提醒:paths、alias 中尽量使用顶级标识、根路径、绝对路径,不要使用相对标识,因为在不同深度的模块引用时会解析为不同的路径。
    3. 相对标识:在哪里被引用,相对的解析位置视被引用的地方而定,遵循当地的规则。


    四、seajs.use 路径解析规则
    相对标识:相对于 当前页面 解析。

    五、define 定义模块 ID 解析规则 (1)

    (第 3 层,路径可以相对于 alias 或 paths 来设置)
    可以使用:相对标识、顶级标识、根路径
    推荐使用顶级标识,如果模块的位置不在 base 基础路径内,则使用相对标识或根路径。
    相对标识:相对当前页面解析

    六、模块依赖ID 解析规则 (2)

    (第 3 层,路径可以相对于 alias 或 paths 来设置)
    相对标识:相对 base 基础路径解析

    define("..", ["./app/src/module/Base"],..)


    七、模块内 require 其他模块的ID 解析规则 (3)
    (第 3 层,路径可以相对于 alias 或 paths 来设置)
    相对标识:相对 base 基础路径解析

    八、总结:
    1.paths 和 alias 的设置仅仅相当于一个变量,在哪里使用,就在那里替换为设定的值,然后再解析。
    2.尽可能的使用顶级标识。
    3.如果不能使用顶级标识,比如目录跨越比较大等,则尽量设置 alias 或 paths 通过一个非相对路径标识定位到一个目录,然后在这个标识下,再定义ID。

  • 相关阅读:
    《海思VPSS — 将1920*1080图像通过VPSS缩放旋转成800*1280在LCD上显示》
    《Shell编程实例 —— 自动检测并挂载硬盘》
    《Shell脚本学习 —— 运算符、输入/输出重定向》
    《Shell脚本学习 —— 函数、文件包含》
    《Shell脚本学习 —— 流程控制if、for、while、无限循环、until、case、跳出循环》
    《Shell脚本学习 —— Shell传递参数、echo命令、test命令》
    牛客多校第三场 A—pacm team (4维背包加路径压缩)
    牛客第二场Dmoney
    牛客第二场A-run
    牛客第二场A-run
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4135615.html
Copyright © 2020-2023  润新知