Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

require.js的模块定义串线问题

  最近在搞AMD,顺便看了下,require.js的代码,结果发现里面好多蛋疼的地方。最离谱的是对匿名define方法的处理方式。当require.js发起请求后,它就会开始等待匿名define的调用。这个等待并没有什么对应性判断,所以匿名模块的定义可能串线。
<script src="require.js"></script>
<script>
require(["a"],function(e){
  console.log("a模块说:"+e);
});
setTimeout(function(){
  //在a.js加载完成前执行的话,这个模块会取代真正的a模块
  define(function(){
    return "我不是a模块";
  })
},100);
</script>
  为了确保测代码的a模块总是加载的比较慢,我们从服务器程序上控制。
<?
header('Content-Type: text/javascript');
sleep(1);
?>
define(function(){
  return "我是a模块";
});
  结果就是这么尴尬

  实际上这个问题使用currentScript做判断的话是可以解决的,我只是好奇为什么require.js这么流行的东西不把功能给实现好。。。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^