美文网首页
requirejs原理解析

requirejs原理解析

作者: Mr无愧于心 | 来源:发表于2019-02-28 19:29 被阅读0次

核心

require的核心是define函数和require函数
define 函数导出模块
require 引入模块

使用

  1. 同时require多个模块,没有多层依赖
define('module1',[],function(){
    return '模块一'
})
define('module2',[],function(){
    return '模块二'
})
require(['module1','module2'],function(module1,module2){
    console.log(module1,module2,15);//'模块一','模块二'
})
  1. 多层依赖
define('module2',['module1'],function(module1){
    return module1+' module2'
})
define('module3',['module2'],function(module2){
    return module2+' module3'
})
require(['module3'],function(module3){
    console.log(module3);
})

简单实现

let factorys={};
function define(moduleName,dependencies,fn){
    factorys[moduleName]=fn;//让模块名称和函数对应起来
}
function require(mods,callback){
    let res=mods.map((mod)=>{
        return factorys[mod]();
    })
    console.log(res)
    callback.apply(null,res)
}
  • 以上代码没有实现依赖的情况,继续补充
define('module2',['module1'],function(module1){
    return module1+' module2'
})
define('module3',['module2'],function(module2){
    return module2+' module3'
})
require(['module3'],function(module3){
    console.log(module3);
})

最终实现(递归)

let factorys={}
function define(moduleName,dependenties,fn){
    factorys[moduleName]=fn;
    fn.dependenties=dependenties;//把依赖挂载到当前要执行的函数上
}
function require(deps,callback){
    let res=deps.map((dep)=>{//moduleName
        let result;
        let fn=factorys[dep]
        if(fn.dependenties.length>0){//如果有依赖
            require(fn.dependenties,function(){//递归
                result = fn.apply(null,arguments)
            })
        }else{
            result=fn();
        }
        return result
    })
    callback.apply(null,res)
}

相关文章

  • requirejs原理解析

    核心 使用 同时require多个模块,没有多层依赖 多层依赖 简单实现 以上代码没有实现依赖的情况,继续补充 最...

  • RequireJS路径深入详解

    RequireJS路径详解(深入理解) 0. 前言 由于官方文档说明甚少,导致RequireJS的路径解析逻辑就像...

  • 前端模块化-AMD

    AMD 代表是 requirejs实现代码:tiny-requirejs 简单实现原理 查找script上的dat...

  • requireJs原理分析

    requireJs 原理探究以及demo实现 写在前面: 大家在开发中,天天在使用requireJs,对于requ...

  • 你不得不了解的requirejs中的路径解析

    最近准备将自己的项目替换为requirejs,在使用requirejs的过程中,模块的路径解析踩了一波坑,于是在这...

  • RequireJS用法解析

    1、概述 requirejs 的相关说明: RequireJS是一个非常小巧的JavaScript模块载入框架,是...

  • 发现•分享—2019-01-10

    工具 使用webpack4提升180%编译速度 RequireJS路径深入详解 Webpack 源码解析 文章 C...

  • 学习资料汇总

    GeoHash核心原理解析 GeoHash算法学习讲解、解析及原理分析

  • Requirejs常用配置和应用

    requirejs、require方法冲突 如果加载了多个requirejs脚本,每个requirejs会判断是否...

  • SparseArray原理分析

    系列文章地址:Android容器类-ArraySet原理解析(一)Android容器类-ArrayMap原理解析(...

网友评论

      本文标题:requirejs原理解析

      本文链接:https://www.haomeiwen.com/subject/lrgoyqtx.html