JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一个极为简单的requirejs实现方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

require和 sea的源码分析,我之前的博客有写过, 今天我想分享的是一个很简单的核心代码(不带注释和空行大概60行), 没有容错判断。

require.js

require函数实现用一句话概括:

依次加载require的模块,然后监测script的onload事件,判断所有模块加载成功,执行require的callback, 如果只带一个参数且不是数组,就是加载成功后return 模块。

<div class="jb51code">
<pre class="brush:js;">
//标记已经加载成功的个数
var REQ_TOTAL = 0;
//模块导出
window.exports = {};
//记录各个模块的顺序
var exp_arr = [];

//判断是否数组
function isArray(param) {
return param instanceof Array;
}

//require 真正实现
function require(arr,callback) {

var req_list;

if(isArray(arr)) {
req_list = arr;
} else {
req_list = [arr];
}
var req_len = req_list.length;

//模块逐个加载
for(var i=0;i<req_len;i++) {
var req_item = req_list[i];

var $script = createScript(req_item,i);

var $node = document.querySelector('head');

(function($script) {
  //检测script 的onload事件
  $script.onload = function() {
    REQ_TOTAL++;

    var script_index = $script.getAttribute('index');

    exp_arr[script_index] = exports;

    window.exports = {};

    //所有链接加载成功后,执行callback
    if(REQ_TOTAL == req_len) {
      callback && callback.apply(exports,exp_arr);


    }

  }

  $node.appendChild($script);
})($script);

}

}

//创建一个script标签
function createScript(src,index) {
var $script = document.createElement('script');

$script.setAttribute('src',src);
$script.setAttribute('index',index);

return $script;
}

然后写了2个导出模块的js文件, 只写了最简单的exports实现

define.js

define2.js

然后测试demo很简单

def2.define.info();
});

以上就是小编为大家带来的一个极为简单的requirejs实现方法全部内容了,希望大家多多支持菜鸟教程~

大佬总结

以上是大佬教程为你收集整理的一个极为简单的requirejs实现方法全部内容,希望文章能够帮你解决一个极为简单的requirejs实现方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: