2013-09-11 3 views
0

В случае очень длинного встроенного файла, я хотел бы иметь возможность разбить его на несколько частей. Например, продавцы могут быть преобразованы в файл vendor.built.js, а остальные - в файл app.built.js.Как разбить сборку на несколько файлов?

Как это можно сделать?

+0

Если файлы поставщика являются просто JS, то предоставляют ли они сокращенную версию? Если это так, просто соедините их и используйте r.js отдельно для своих модулей. –

+0

Мне нужно, чтобы эти библиотеки были внутри модулей, поэтому, если бы у меня было r.js игнорировать их во время сборки, как нужно знать, что они были загружены? – silkAdmin

+1

Не знаете, почему это проголосовало, если я чего-то не хватает, поделитесь некоторыми соображениями. – silkAdmin

ответ

1

У меня есть предлагаемое решение для этого в моем проекте require-lazy.

Он совершает что-то немного иначе, чем то, что вы спрашиваете хотя: Он разбивает приложение на ленивые нагруженные модули, как простые (с точки зрения разработчика) в письменной форме (обратите внимание на использование в lazy! плагина):

define(["eager-module", "lazy!lazy-module"], function(eager, lazy) {...}) 

А затем использовать его с помощью обещания:

lazy.get().then(function(real_module) {...}); 

lazy-module будет загружен один раз, первый раз .get() это вызов редактор

В приведенном выше примере процесс сборки создаст 2 js-файла: On, содержащий основной модуль, eager-module и все их зависимости. И один, содержащий lazy-module и все его зависимости, которые не были включены в предыдущий файл/комплект.

В требовательном проекте есть несколько примеров, которые очень просты в настройке, вам требуется только Node.js.

+0

Спасибо Nikos, у меня есть трюк для модуля «ленивый груз», и я думаю, что он похож на ваш сценарий. Проблема в том, что она не работает для shimming. – silkAdmin

+0

Я не знаю, как вы это делаете, но требовательно работает с shimming, посмотрите на [пример] (https://github.com/nikospara/require-lazy/tree/master/examples/shim). –

+0

Достаточно близко, еще раз спасибо Nikos, я отвечу на ваш ответ, но не могу принять его в качестве окончательного ответа, поскольку я чувствую, что должно быть собственное решение или, по крайней мере, что-то с меньшими накладными расходами. (Я думаю, вы все равно получите репутацию) – silkAdmin

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