成熟丰满熟妇高潮XXXXX,人妻无码AV中文系列久久兔费 ,国产精品一国产精品,国精品午夜福利视频不卡麻豆

您好,歡迎來到九壹網(wǎng)。
搜索
您的當(dāng)前位置:首頁一個(gè)極為簡單的requirejs實(shí)現(xiàn)方法

一個(gè)極為簡單的requirejs實(shí)現(xiàn)方法

來源:九壹網(wǎng)

require和 sea的源碼分析,我之前的博客有寫過, 今天我想分享的是一個(gè)很簡單的核心代碼(不帶注釋和空行大概60行), 沒有容錯(cuò)判斷。

require.js

require函數(shù)實(shí)現(xiàn)用一句話概括:

依次加載require的模塊,然后監(jiān)測script的onload事件,判斷所有模塊加載成功,執(zhí)行require的callback, 如果只帶一個(gè)參數(shù)且不是數(shù)組,就是加載成功后return 模塊。

//標(biāo)記已經(jīng)加載成功的個(gè)數(shù)
var REQ_TOTAL = 0;
//模塊導(dǎo)出
window.exports = {};
//記錄各個(gè)模塊的順序
var exp_arr = [];
 
//判斷是否數(shù)組
function isArray(param) {
 return param instanceof Array;
}
 
//require 真正實(shí)現(xiàn)
function require(arr, callback) {
 
 var req_list;
 
 if(isArray(arr)) {
 req_list = arr;
 } else {
 req_list = [arr];
 }
 var req_len = req_list.length;
 
 //模塊逐個(gè)加載
 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 = {};
 
 //所有鏈接加載成功后,執(zhí)行callback
 if(REQ_TOTAL == req_len) {
 callback && callback.apply(exports, exp_arr);
 
 
 }
 
 }
 
 $node.appendChild($script);
 })($script);
 
 }
 
}
 
//創(chuàng)建一個(gè)script標(biāo)簽
function createScript(src, index) {
 var $script = document.createElement('script');
 
 $script.setAttribute('src', src);
 $script.setAttribute('index', index);
 
 return $script;
}

然后寫了2個(gè)導(dǎo)出模塊的js文件, 只寫了最簡單的exports實(shí)現(xiàn)

define.js

exports.define = {
 topic: 'my export',
 desc: 'this is other way to define ',
 sayHello: function() {
 console.log('topic ' + this.topic + this.desc);
 }
}

define2.js

exports.define = {
 name: 'xm',
 age: 22,
 info: function() {
 console.log('topic ' + this.name + this.age);
 }
}

然后測試demo很簡單

//測試demo
 require(['../res/define.js', '../res/define2.js'], function(def, def2) {
 def.define.sayHello();
 
 def2.define.info();
 });

Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2

違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)