requireJS的原理

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        有两个函数,一个require,另一个define。
        define("模块名称",["依赖项"],funtion(依赖项){
            function t(){}
            return t;
        });
        
        define(["a","b","c"],function(a,b,c){
            
        });
        首先是查找依赖项,
        如果在全局变量req.dependence找不到依赖项,
        就根据依赖项的名字,下载对应js文件。下载可以是异步下载。
        等js文件下载好,立即执行js文件内容,把返回的结果注册到req.dependence下面。同时把返回结果,注入到回调函数。
        结构类似如下:
        "name":{
            "name":"",
            "dependence":[],
            "fn":function(){}
        }
        这里要注意两个问题,1是循环依赖,2是同名模块覆盖。
        循环依赖的解决:记住自己模块的名字,如果有直接依赖项或者间接依赖项是自己,那么报错。
        同名模块的解决:覆盖或者报错。
        有多个依赖项下载,要有计数器。等他们全下载并执行完,才执行回调函数。
    </body>
</html>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。