Javascript Require.js是否有用于加载单个依赖项的同步版本?

Javascript Require.js是否有用于加载单个依赖项的同步版本?,javascript,browser,requirejs,Javascript,Browser,Requirejs,…这将启用此模式: var $ = require('jQuery'); 我正在查看的是回调版本,例如,require(['jQuery'],function($){…})受浏览器限制,加载脚本只能是异步的。因此,在Require.js中没有用于加载依赖项的同步版本 但是,某些模块加载程序确实有变通方法。例如,Sea.js提供了一个sync version(),它运行一个regexp来提取所有依赖项(),并在实际执行脚本之前异步加载它们。因此,依赖项似乎是同步加载的。Require附带了一个“

…这将启用此模式:

var $ = require('jQuery');

我正在查看的是回调版本,例如,
require(['jQuery'],function($){…})

受浏览器限制,加载脚本只能是异步的。因此,在Require.js中没有用于加载依赖项的同步版本


但是,某些模块加载程序确实有变通方法。例如,Sea.js提供了一个sync version(),它运行一个regexp来提取所有依赖项(),并在实际执行脚本之前异步加载它们。因此,依赖项似乎是同步加载的。

Require附带了一个“CommonJS”模式,允许类似节点的Require语句内联到代码中。例如,这是一个典型的AMD定义,将异步加载这些脚本:

define(['script1', 'script2'], function (script1, script2) {

});
define([], function () {

    // Each of these scripts will be loaded synchronously
    var script1 = require("script1");
    var script2 = require("script2");
});
但你也可以这样做:

define(function () {

   var script1 = require("script1");
   var script2 = require("script2");
});
并且Require也将异步处理这些。这样做的方式是Require看到您没有将依赖项数组指定为第一个参数,然后扫描代码以查找Require语句。然后,它异步处理它们中的每一个

但是,为了回答您的问题,如果确实指定依赖项数组作为第一个参数,并且仍然使用CommonJS语法,Require将同步处理Require语句:

define(['script1', 'script2'], function (script1, script2) {

});
define([], function () {

    // Each of these scripts will be loaded synchronously
    var script1 = require("script1");
    var script2 = require("script2");
});
文件::


看起来在开发过程中使用了同步变量:

require('foo')
执行同步加载,
require('foo',函数(foo){…})
执行异步加载。在开发中,我们使用同步加载(方便是唯一的原因)-在生产中,RequireJS优化器内联线无论如何都需要调用

来源:

Afaik“sync”版本仅在node.js中以及之前已加载脚本时有效。