-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
seajs源码学习 #1103
Comments
没看懂疑问。 |
我已经在1楼改了描述,不知这样能看懂么?@afc163 |
仍然看不懂。 |
+_+,Save information for "saving" work in the script onload event。就是说,为什么要保存好了,等onload |
define 是发生在 script onload 之后的。 |
在mac下Chrome调试,是先执行到define的~.~,后才跑到script onload回调的断点处 |
你对的,onload 要等都执行完了才触发。 |
是啊,第一次发现是这样的。 但,我的疑问还没解决啊 |
define执行的时候并不知道对应的是那个模块,所以先把模块信息存储在anonymousMeta, 等onload事件触发的时候关联模块名与模块信息, 这里是通过onload事件e.target.getAttribute('src')获得模块名然后与anonymousMeta进行关联. |
1 similar comment
define执行的时候并不知道对应的是那个模块,所以先把模块信息存储在anonymousMeta, 等onload事件触发的时候关联模块名与模块信息, 这里是通过onload事件e.target.getAttribute('src')获得模块名然后与anonymousMeta进行关联. |
一个Js文件语句中,require"关键字"引入依赖的js,load事件回调中执行依赖下载;若发现没require,则从use定义的回调开始执行,貌似触发链式执行。
load 解析有无依赖mod,有则循环fetch,fetch回调里若有嵌套依赖,则在子mod的load中再次循环fetch。无依赖,就触发下个onload方法...
疑问
以前看了玉伯大大在《程序员》上关于模块化开发,一直纠结怎么实现依赖加载,后来想到函数的字符串化解析。
如今研究源码,发现不仅如此,依赖的js文件下载时机,放到load事件触发后,即在事件处理函数中触发一系列流程,后接着下载。而不是在define函数中,立即触发下载,下面是define中最后两句
现在把解析的module保存到anonymousMeta,或cachedMods中。就如注释所说,等onload事件,再读出来。
整个流程
这样流程可行不
难道是因为
难道低版本的IE下载Js是串行的,必须要load事件后继续执行;Js是单线程的,如果define执行时下载,难道因为上个Js还在串行下载,会被直接被无视,还是怎样?@lifesinger
The text was updated successfully, but these errors were encountered: