老代码考古,seajs为什么能够和CMD一样同步模式的方式使用require()方法

我们知道在服务端的node可以同步block的方式加载别的js库文件,在服务端使用会block的require()函数来加载,就是所谓的CMD、CommonJS规范。

而在浏览器端里的js则因为网络延迟等各种因素,不能使用同步block方式加载js库,而是异步回调callback加载的方式,也就是所谓的AMD模块规范。

那么浏览器里seajs是如何和服务端CMD一样同步模式的方式使用require()方法同步加载网络js库呢,

原来是这个使用了importScripts(url)的代码:

https://github.com/seajs/seajs/blob/0ce0b19e16dc4708007fb0ded006b08ad379540d/dist/runtime-debug.js#L355

importScripts(url)是个同步阻塞block的方法

https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/importScripts

 

posted @ 2023-04-04 11:21  zjsxwc  阅读(15)  评论(0编辑  收藏  举报