首页 > requrie 可以异步加载,但怎么做到同步加载,原理是什么?

requrie 可以异步加载,但怎么做到同步加载,原理是什么?

var es = {};
es.module = {};
es.module.exports = {};
es.require = function(src, fn) {
  var js = document.createElement('script');
  js.src = src;
  js.charset = 'utf-8';
  document.querySelector('head').appendChild(js);
  js.onload = function() {
    fn(es.module.exports);
  }
};
es.define = function(fn) {
  fn();
};
es.require('a.js', function(a) {
  a();
});

////////////////////如果我想这样写就会报错////////////////////////////
var a = es.require('a.js');
a();//同步加载就会报错,请问require内部应该怎么写可以实现同步加载??

a.js

es.define(function() {
  
  function a() {
    console.log('a()...');
  }
  es.module.exports = a;
});

先说bundle好了,requirejs不是“同步”请求js,而是通过r.js扫描一遍你的代码,理清楚依赖关系后,把所有模块按照依赖加载的顺序打包合并成一个文件。

再说如果就是不想bundle,但又想写着好像commonjs的代码

var userFactory =  require('./UserFactory');
userFactory.creatUser();

那你应该看commonjs-wrapper


同问,我也想知道requirejs怎么同步请求js

【热门文章】
【热门文章】