美文网首页
javascript模块化(AMD)框架required.js使

javascript模块化(AMD)框架required.js使

作者: maige | 来源:发表于2018-01-28 18:43 被阅读0次

    公司某项目中使用ruquired.js进行javascript模块化管理,写一个例子,整理下笔记。

    Javascript模块化

    Javascript模块化三种写法 http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

    AMD规范

    1、 定义模块

    采用特定的define()函数来定义

    2、 加载模块

    采用require()语句加载模块require([module], callback);

    第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。例如:

      require(['math'], function (math) {
    
        math.add(2, 3);
    
      });
    

    math.add()与math模块加载不是同步的,浏览器不会发生假死。所以很显然,AMD比较适合浏览器环境。

    require.js实现了AMD规范。

    require.js例子

    我的Github地址:https://github.com/oldmaimai/requirejsdemo

    定义模块A,moduleA.js

    /*
    function fun1(){
      alert("it works");
    }
    
    fun1();
    */
    
    /*
    示例1:使用普通方式创建模块:使用了块作用域来申明function防止污染全局变量
    */
    /*
    (function(){
      var add = function (x,y){
        return x+y;
      };
      return {
        add: add
      };
    })()
    */
    
    define(function (){
      var add = function (x,y){
        return x+y;
      };
      return {
        add: add
      };
    });
    

    定义模块B,moduleB.js

    /*
    实例2:使用AMD规范创建模块:define方式来创建模块,同时,该模块还依赖moduleA
    */
    define(['moduleA'], function(moduleA){
      function add(x, y){
            return moduleA.add(x, y);
      }
      return {
         add : add
      };
    });
    

    模块使用方式1:

    直接引用require.js,用require的方式加载

    
    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript" src="require.js"></script>
            <script type="text/javascript">
                // 本地加载方式1
                require(["moduleA"]);
                
                // 本地加载方式2
                require(["moduleB"],function(mb){
                    alert(mb.add(1, 1));
                })
            </script>
        </head>
        <body>
          <span>body</span>
        </body>
    </html>
    

    模块使用方式2

    异步加载requires.js,使用主模块方式,我们项目中使用这种

    首先定义主模块main.js

    //主模块依赖jquery、moduleB这2个模块
    alert("主模块加载成功!");
    require(['jquery-1.10.2', 'moduleB'], function ($, b){
        // some code here
            alert(b.add(2, 2));
      });
    
    

    html使用main

    <!DOCTYPE html>
    <html>
        <head>
            <!--
            1.async属性表明这个文件需要异步加载,避免网页失去响应。IE不支持这个属性,只支持defer,所以把defer也写上。  
            2.data-main属性的作用是,指定网页程序的主模块。这个文件会第一个被require.js加载。
              由于require.js默认的文件后缀名是js,所以可以把main.js简写成main
            -->
            <script src="require.js" defer async="true" data-main="main"></script>
        </head>
        <body>
          <span>本例子展示了1、如何定义模块 2、如何引入模块</span>
        </body>
    </html>
    

    相关文章

      网友评论

          本文标题:javascript模块化(AMD)框架required.js使

          本文链接:https://www.haomeiwen.com/subject/tiezaxtx.html