• Javascript知识汇总------Require学习笔记


    .index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script data-main="main.js" src="http://apps.bdimg.com/libs/require.js/2.1.11/require.min.js"></script><!-- 同步加载,会导致页面失去响应一段时间 -->
        <script data-main="main.js" src="http://apps.bdimg.com/libs/require.js/2.1.11/require.min.js" defer async="true"></script><!-- 异步加载,defer兼容IE -->
    </head>
    <body>
        <div></div>
        <script>
            /**
             * requireJs主要解决两个问题
             *  1. 实现js文件的异步加载,避免网页失去响应
             *  2. 管理模块之间的依赖性,便于代码的编写维护
             * 
             * requireJs加载分3部分
             *      1. 引入:<script data-main="libs/main.js" src="http://apps.bdimg.com/libs/require.js/2.1.11/require.min.js">
             *      2. 模块配置: 
             *          baseUrl->基础路径     paths->路径
             *          require.config({ baseUrl: "js/lib", paths: { "jquery": "jquery.min", "underscore": "underscore.min" } });
             *      3. 主模块写法:
             *          main.js,我把它称为”主模块”,意思是整个⽹网⻚页的⼊入⼝口代码
             *          require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){ // some code here });
             *          
            */
        </script>
    </body>
    </html>

    main.js

    /*
                根目录
                    |
        -------------------------------
        |              |              |
    indx.html       main.js         libs
                                        |
                                ----------------------------
                                |             |            |
                                jquery       showDate   testShim
    */
    require.config({
        baseUrl:'libs', //表示基础路径paths中都是相对于baseUrl展开的
        paths: {  //对于标准模块定义方法通过paths属性来定义
            "jquery" : "jquery",
            "showDate" : "showDate"
        },
        shim : { //非标准模块化定义
            testShim : {
                deps : [],
                exports : 'Obj2' //与非标准中暴露出来的变量名一致(testShim.js中的Obj2 || Obj1),若此处为Obj1->下面fn1的值就为1,若为Obj2->下面fn1的值为2
            }
        }
    });
    require(["jquery","showDate"],function ($,showDate){
        console.log($); //Jquery对象
        showDate.show(); //1
    });
    require(["testShim"],function (testShim){
        testShim.fn1(); //shim中exports定义的值与js模块中暴露的值一职才能正常运行
    });

     .showDate.js

    define(function (){
        var num = 10;
        function showDate(){
            $('div')[0].innerHTML = '哈哈哈';
        }
        return {
            show:showDate
        }
    });
    /*
    define(['jquery'],function ($){  //在此处定义其依赖项
        var num = 10;
        function showDate(){
            $('div')[0].innerHTML = '哈哈哈1';
        }
        return {
            show:showDate
        }
    })
    */

    .testShim.js

    /**
     * 非标准第一种写法
     * 
     */
    window.Obj1 = {  //输出全局变量Obj1
        fn1 : function(){
            console.log(1)
        }
    };
    /**
     * 非标准第二种写法
     * 
     */
    (function (window){  //输出全局变量Obj2
        var Obj2 = {};
        Obj2.fn1 = function (){
            console.log(2)
        }
        window.Obj2 = Obj2;
    })(window);
  • 相关阅读:
    鸟哥私房菜*基础篇(3)
    Java 基于Graphics2D绘制电子收据图片
    微信扫码支付沙盒测试,解决沙盒环境下签名验证失败
    JAVA对象合集,根据条件过滤
    java对象根据字段进行排序
    vue 弹窗调用父窗口函数
    php使用post功能,调用微信推送服务
    JS字符串截取
    关于两个 IQueryable 合并
    bootstrap清除数据源
  • 原文地址:https://www.cnblogs.com/iwzyuan/p/8820813.html
Copyright © 2020-2023  润新知