zoukankan      html  css  js  c++  java
  • 前端常用的库和实用技术之JavaScript 模块化

    模块化概念
    AMD是requirejs在推广过程中对模块化定义的规范化产出。
    异步加载模块,依赖前置,提前执行
    Define定义模块define(['require','foo'],function(){return});
    Require加载模块(依赖前置)require(['foo','bar'],function(foo,bar){});
    CMD是SeaJS在推广过程中对模块化定义的规范化产出。
    Define定义exports导出define(function(require,exports,module){});
    module上存储了当前模块上的一些对象。
    require(./a)直接引入,require.async异步引入
    同步加载,依赖就近,延迟执行
    类似的还有CommonjsModule/2.0规范
    AMD模块化的代码

    //index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script data-main="js/main.js" src="./js/require.js"></script>
    </head>
    <body>
        <script>
    
        </script>
    </body>
    </html>
    
    //main.js
    define(['require','main'],function(require){
        require(['index','test'],function(index,test){
            console.log(index());
            console.log(test());
        })
    })
    
    //index.js
    define(['require','index'],function(require){
        var index = function(){
            console.log('test index');
        }
        return index;
     })
    
    //test.js
    define(['require','index'],function(require){
       var init = function(){
           console.log('test init');
       }
       return init;
    })
    

    方法调用的方式

    //index.js
    define(['require','index'],function(require){
        var index = {};
        var index = {
            init:function(){
                console.log('test init');
            }
        }
        return index;
     })
    
    //main.js
    define(['require','main'],function(require){
        require(['index','test'],function(index,test){
            console.log(index.init());
            console.log(test.init());
        })
    })
    
    //test.js
    define(['require','index'],function(require){
        var index = {};
    
       var index = {
           init:function(){
               console.log('test init');
           }
       }
       return index;
    })
    

    效果为

    seajs的应用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="./js/sea.js"></script>
    </head>
    <body>
        <script>
            // seajs 的简单配置
    seajs.config({
      base: "./js/",
      alias: {
        "jquery": "jquery.js"
      }
    })
    
    // 加载入口模块
    seajs.use("main")    
        </script>
    </body>
    </html>
    
    //index.js
    define(function(require,exports,module){
        // 透过exports对外提供接口
        // exports.doSomething = function(){
        //     console.log('my ok ');
        // }
        // exports.doSomething2 = function(){
        //     console.log('my ok2 ');
        // }
        var a = {};
        a.doSomething = function(){
            console.log('my ok ');
        }
        a.doSomething2 = function(){
            console.log('my ok2 ');
        }
        // console.log(module);
        module.exports = a;
        
    });
    
    //main.js
    define(function(require,exports,module){
        require('jquery');
        console.log('..aaa');
        var index =require.async('index',function(index){
            console.log(index);
        });
        
    })
    

    本文看自前端常用的库和实用技术之JavaScript 模块化视频

  • 相关阅读:
    佛洛依德
    Python2.7利用Tesseract进行中英文图像识别
    批量生成二维码打包成exe文件
    python基础5—文件 | json序列化
    python基础6—(高阶,匿名,偏)函数 | 装饰器
    python基础4—面向对象
    python基础2—集合框架
    一不小心翻车了-(angularjs 1.6X) 由Eventbus使用异常说起
    简单说下js闭包之setTimeout
    html5上传本地图片,在线预览及裁剪(filereader,canvas)
  • 原文地址:https://www.cnblogs.com/smart-girl/p/11545198.html
Copyright © 2011-2022 走看看