2014-09-15 3 views
0

... который позволил бы эту модель:Имеет ли Require.js версию синхронизации для загрузки одной зависимости?

var $ = require('jQuery'); 

Я, глядя на Require.js docs и все, что я вижу, это обратный вызов-версия, например, require(['jQuery'], function ($) { … });

+0

Насколько нам известно, «синхронизация» версия работает только в узле. js и когда скрипт загружен раньше. – Sirko

ответ

0

Похоже синхронизации вариант используется в процессе разработки:

require('foo') выполняет синхронную нагрузку, require('foo', function(foo){ … }) выполняет асинхронную нагрузку. При разработке мы используем нагрузку синхронизации (удобство является единственной причиной) - в производстве Внутристрочный RequireJS Optimizer, которые требуют вызовут в любом случае ...

Источник: https://github.com/rodneyrehm/viewport-units-buggyfill/issues/18#issuecomment-55604581

0

Ограниченный браузером, загрузка скриптов может быть только асинхронной. Таким образом, нет никакой версии синхронизации для загрузки зависимостей в Require.js.

Однако некоторые загрузчики модулей имеют обходные пути. Например, Sea.js предлагает версию синхронизации (http://seajs.org/docs/en.html#quick-start), запустив регулярное выражение для извлечения всех зависимостей (https://github.com/seajs/seajs/blob/3d3c3bc142d9a6e3f6de14c1959d3f308b1c9e0e/src/module.js#L324) и загружая их асинхронно до фактического выполнения скрипта. Таким образом, кажется, что зависимости загружаются синхронно.

0

Требование поставляется с режимом «CommonJS», позволяющим использовать в коде кодексы типа Node-типа. Например, это типичное определение AMD, который будет загружать эти скрипты асинхронно:

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

}); 

Но вы также можете сделать это:

define(function() { 

    var script1 = require("script1"); 
    var script2 = require("script2"); 
}); 

И Требовать будет обрабатывать эти асинхронно также. То, как это происходит, заключается в том, что Require видит, что вы не указали массив зависимостей в качестве первого аргумента, а затем сканируете свой код для операторов Require. Затем он обрабатывает каждый из них асинхронно.

Однако, чтобы ответить на ваш вопрос, если вы указываете массив зависимостей в качестве первого параметра и по-прежнему использовать синтаксис CommonJS, Требовать будет обрабатывать требуют инструкции синхронно:

define([], function() { 

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

Документация ::

https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define

Смежные вопросы