zoukankan      html  css  js  c++  java
  • javascript模块化---requirejs

    requirejs是异步执行

    为什么会出现模块化
    1.不定什么时候,自己就将全局变量改变了
    2.函数名的冲突
    3.依赖关系不好管理
    如果b.js依赖a.js那么b必须放在a的下面
    解决的办法
    1.自执行函数来包装代码
    mod=function(){
        var a,b;
        return {
            add:function(){
                a+b+s;
            },
            form:function(){
            }
        }
    }();
    2.jquery风格的匿名自执行函数
    (function(window){
    })(window);

    最后模块化形成是
    AMD
    a.js
    define(function(){
    });
    b.js
    define(function(){
    });
    main.js
    require(['a','b'],function(a,b){    
    这种执行转态会将b提前预加载一遍,当前提有多个js文件的时候,就都要全部预加载一遍,所以这个的效率不是很好。
    解决的办法是:
    define(function(){
        require(['a',function(a){
         a.hello();
        }]);
        $("#b").click(function(){
            require(['b'],function(b){
                b.hello();
            });
        });
    });
    AMD叫做异步模块定义
    require.js语法
    define(id,dependencies,factory);
    id可选的参数 用来定于模块的标识
    dependencies当前模块依赖的模块名称数组
    factory模块化初始化要执行函数或者对象

    在页面中使用require函数加载模块
    require([dependencies],function(){})

    AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块
    1.定义无依赖的模块
    define(function(){
    });
    require.config({//定义路径
        baseurl:"script/lib",
        paths:{
        }
    });
    require(["app/"],function(){
    });
    2.定义有依赖的模块
    define(['a'],function(a){})
    require.config({
    });
    require(["app/"],function(){
    });
    一些总结和一个demo地址:https://github.com/GainLoss/summary/tree/master/%E5%81%8F%E5%83%BB%E7%9A%84%E7%9F%A5%E8%AF%86/%E6%A8%A1%E5%9D%97%E5%8C%96

  • 相关阅读:
    break和continue
    while循环嵌套
    while循环语句
    SDUT 2766-小明传奇2(母函数)
    那些奇妙的"大师"是怎样炼成的(科学、迷信、心理)
    深入理解Linux字符设备驱动
    [从头学数学] 第162节 锐角三角函数
    iOS将数组中的内容分拼接成字符串
    win10 UWP 全屏
    杂(三)-The type java.lang.Object cannot be resolved It is indirectly referenced ...
  • 原文地址:https://www.cnblogs.com/GainLoss/p/5760933.html
Copyright © 2011-2022 走看看