У многих библиотек JavaScript есть инструмент Builder, который позволит вам "сформировать", какие функции библиотеки вы будете зависеть, как с точки зрения стоимости пропускной способности для клиента, так и с точки зрения изолирования функциональных возможностей, которые вам действительно нужны.
Например, мне нравится много вещей в sugar.js, но мне просто не нужна или нужна обработка катаканы и хираганы. Как самый тривиальный пример, я хочу иметь возможность "форматировать" sugar.js только для экспорта string.isBlank().
Есть ли у меня инструмент для этого? Есть ли какие-либо постоянные усилия комитета EcmaScript сделать что-то подобное в будущей версии JavaScript? Существуют ли какие-либо языки более высокого уровня, такие как TypeScript и CoffeeScript, предлагают скрытую поддержку для такого "формирования"? Я могу сделать такое "формирование" в С# для .NET DLL через monolinker.
В принципе, мне кажется, что AMD обрабатывает аспект Loader современного компилятора, но не обрабатывает аспект Linker. Строители для jquery и dojo работают только для конкретный модуль, и не являются настоящими Linkers, просто Builders.
ОБНОВЛЕНИЕ: Компилятор Google Closure - это компилятор, который использует JavaScript в качестве входных данных и создает JavaScript в качестве вывода. Документация Advanced Compilation and Externs предполагает, что для этого есть вызов API:
Если сборка этих экспортных инструкций кажется слишком утомительной, вы можете использовать функцию для экспорта для вас. См. Функции Библиотеки Closure goog.exportSymbol() и goog.exportProperty() для примеров экспортных функций.
Однако это кажется довольно запутанным и заставляет меня напрямую зависеть от компилятора Google Closure. На данный момент я ищу информацию о будущих стандартах от Комитета EcmaScript в отношении CommonJS и любой мудрости от людей, которые подумали об этой проблеме и попытались ее решить. Особенно от разработчиков TypeScript; Я не хочу создавать файлы объявления в TypeScript для sugar.js, а затем использовать компилятор Google Closure для компилятора my TypeScript. Это просто невероятно сложно и сложно отлаживать.