RequireJS是怎样实现的?

RequireJS会一次加载所有文件,然后把它们保存起来,以备将来使用。它并行加载所有文件,然后 sequenced in the order mentioned in the config file or normal definition file.

RequireJS最强大的地方就在于:

  1. 加载一个文件
  2. 创建一个对象然后 inject 它

加载一个文件

加载文件就是 attaching 一个script脚本,src指向你的文件,这将会通过require()函数被触发。所有的脚本都有onchange事件,当一个文件被加载的时候,onchange事件被触发,然后被保存成一个变量,这个变量将会被define()函数按需使用。当所有依赖都被解析之后,所有加载的文件将会依照它们被调用的顺序和一个它所创建的map安排

inject

你一定注意到了,所有的能被加载的文件都是AMD。其要做的事情被封装进一个define函数中,然后这个函数返回一些东西。这可以防止变量/业务对象暴露到window上。你在AMD模块中写的任何东西的作用域都限制在define函数中,当在另外一个函数中 injected as 一个对象的时候,它将会被使用。当这个文件被加载完毕的时候,返回的这个值将会被存储在上面所说的地方。

Shimming 是一种不同的技术。如果你加载不是AMDJavaScript文件,这个时候RequireJS将会用一个function把这个文件包起来,然后返回这个文件内容,这样的话,就可以需要的时候进行注入了。

参考1

results matching ""

    No results matching ""