seaJs模块化开发简单入门

随着前端技术的日益成熟,功能越来越丰富强大,规范也越来越健全,在这样的背景环境下很快便有了CommonJsAMDCMD等一系列规范,使前端发开趋向模块化、规范化。
CMD模块化的代表之一就是国内开发的seaJs,它有很多优点:

  • 遵从CMD规范,代码模块化
  • 中文文档通俗易懂,入门上手简单
  • 兼容性好、配置简洁明了、提供插件接口

seajs模块化基本流程:

  1. 引入sea.js库
  2. define定义模块
  3. exports暴露模块
  4. require导入模块

安装

  1. npm安装
    npm i seajs
    
  2. bower安装
    bower i seajs
    
  3. 官网下载:http://seajs.org/docs/#downloads

定义模块

  • main.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    define(function(require,exports,module){
    // 引用test.js
    //require('./test.js')
    /*
    * 如果地址是一个模块,那么require的返回值就是模块中的exports
    */
    function (){
    alert(require('./test.js').num);
    };
    // 向外暴露模块接口
    exports.alert = alert;
    })
  • 1) exports : 对外的接口
    2) require : 依赖的接口

  • test.js

    1
    2
    3
    4
    define(function(require,exports,module){
    var num = 10;
    exports.num = num;
    });

调用模块

  • html页面中引入seajs和使用use方法请求入口文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    大专栏  seaJs模块化开发简单入门iv class="line"><html>
    <head>
    <meta charset="UTF-8">
    <title>seaJs</title>
    </head>
    <body>
    <script src="sea.js"></script>
    <script>
    /*
    * seajs.use方法:
    * 页面去调用模块,
    * 第一个参数:模块的地址
    * 第二个参数:地址加载成功后的回调函数
    * seajs的默认目录:sea.js所在的目录
    * */
    seajs.use('./js/main.js',function(exports){
    // 回调的参数,就是模块中的exports
    exports.alert();
    });
    // 加载多个文件
    /*
    seajs.use(['./main.js','./main2.js'],function(ex1,ex2){
    操作
    })*/
    </script>
    </body>
    </html>
  • 加载多个入口文件

    1
    2
    3
    4
    5
    seajs.use(['./main.js','./main2.js'],function(ex1,ex2){
    // 模块加载完成时执行回调操作
    ex1.fn(); // 调用ex1的方法
    ex2.fn(); // 调用ex2的方法
    })

有些js文件可能是在某些事件触发后才会被加载使用,因此没有必要在页面刚访问时,就加在所有资源文件,这样也可以减少客户端与服务器端的请求时间,提高用户体验。

  • seaja对于此便提供了一个async异步请求的方法:
    1
    2
    3
    require.async('./test2.js',function(ex){ // 异步请求
    ex.fn();
    })

  1. http://seajs.org/docs/#docs
  2. http://www.antcome.com/myfaq/SeaJS.html
原文地址:https://www.cnblogs.com/lijianming180/p/12251337.html