一步一步带你分析 requirejs

Posted 暗影侠客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一步一步带你分析 requirejs相关的知识,希望对你有一定的参考价值。

详细源代码一共就2000多行,来看我这篇分析的同学应该都下载下来了,好了,话不多说,开始:

 

代码的开头就出现3个全局变量: requirejs, require, define

var requirejs, require, define;

(function(global, setTimeout){
 
balababla......

})(this, (typeof setTimeout === ‘undefined‘ ? undefined : setTimeout)))

  

require 和 define 大家应该都知道上干什么的,说实话,我是不知道的,在分析代码的时候,我从来也没用过这个框架,就听过AMD,就来直接看源码了。

如果你也不是很清楚,这2个变量是干什么的,我就来简单介绍一下,懂得的同学要是发现我说错了,希望指点我也一下。

 主页面 index.html:

  注意src是引入我们的requirejs库,  data-main:就是我们第一次用requrie的地方:

 

<html>
<head>
    <title></title>
</head>
<body>
  <script src="require.js" type="text/javascript" data-main="main.js"></script>
</body>
</html>

 main.js:

  这里2个代码块都是依赖require的:

(1)require.config:配置

(2)requrie(); 加载需要的函数,注意里面的 [‘name‘, ‘say‘],其实都是文件名,它们都在./js/ 目录下,具体看conifg

 

require.config({
  baseUrl: ‘‘,
  paths: {
    ‘nameDep‘: ‘js/nameDep‘,
    ‘say‘: ‘js/say‘,
    ‘name‘: ‘js/name‘
  },
  shim: {
    ‘name‘: {
      deps: [‘nameDep‘]
    }
  }
});
require([‘name‘, ‘say‘], function (name, say) {
  say(name);
});

  

./js/name.js  和 ./js/say.js

//name
define([‘‘], function () {
  return ‘测试‘;
});

  

//say
define([], function () {
  return function (name) {
    console.log(name);
  };
});

  

最后注意在config中有个skim,这里面也是定义js文件的,只是由于他可能不符合AMD加载的规范

 ./js/nameDep.js

 

console.log("nameDep.js")

  

 

--------------------------------------分割线-------------------------------------------------------------------------

 

以上是关于一步一步带你分析 requirejs的主要内容,如果未能解决你的问题,请参考以下文章

面试必备透过源码角度一步一步带你分析 ArrayList 扩容机制

[1w6k 字详细讲解] 保姆级一步一步带你实现 Promise 的核心功能

一步一步带你体验算法之魅力

一步一步带你体验算法之魅力

一步一步带你体验算法之魅力

一步一步带你体验算法之魅力