2013-03-31 3 views
5

Я пытаюсь объединить все мои плагин, так что я могу изменить от этого:Организуйте и объедините JS-файлы, Google Closure?

<html> 
    <head> 
    </head> 
    <body>  
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script src="js/plugin1.js"></script> 
     <script src="js/plugin2.js"></script> 
     <script src="js/plugin3.js"></script> 
     <script src="js/plugin4.js"></script> 
    </body> 
</html> 

к этому:

<html> 
    <head> 
    </head> 
    <body>  
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script src="js/plugins.min.js"></script> 
    </body> 
</html> 

Основная идея заключается в том, чтобы иметь инструмент для «автоматического импорта» в моем plugins.js файл всех плагинов, которые мне нужны для моих веб-сайтов, а также их минимизация при компиляции. Я тестировал с помощью Google Closure (загружаемая Java-версия компилятора), и я решил, как минимизировать файлы, но я не могу импортировать внешние файлы. Поэтому я хотел бы спросить вас, можете ли вы сказать мне, является ли Google Closure инструментом, который я ищу, или если я должен использовать другой инструмент или метод.

С "Автоимпорт" Я имею в виду что-то вроде:

Plugins/HELLO.JS

function hello(name) { 
    alert('Hello, ' + name); 
} 

PLUGINS.JS

@import hello.js 
hello('New user'); 

Я надеюсь, что я сделал себе ясно, я прошу прощения, если Я перепутал свой английский.

Спасибо!

+0

Возможно, вы захотите ознакомиться с https://code.google.com/p/closure-compiler/wiki/ManageClosureDependencies. –

ответ

0

Вы можете взглянуть на require.js

+6

require.js, конечно, решает автоматическое управление зависимостями, но это может быть не так. всегда оптимальная стратегия, потому что она хранит большое количество запросов, так как каждый скрипт нуждается в одном запросе на загрузку (AFAIK, я не уверен в этом). Есть ли возможность объединить все javascripts в один автоматически, чтобы минимизировать количество запросов? – Richard

1

Closure-compiler может делать именно то, что вы хотите, но только с кодом библиотеки Closure из-за использования вызовов goog.require. С кодом jQuery лучше всего это скомпилировать ВСЕ ваши плагины вместе в один файл, но это не будет учитывать фактическое использование.

К сожалению, я не знаю ничего, что сделает это для кода в целом.

Примечание: ожидается, что это не будет принятым ответом на вопрос. Вопрос, заданный конкретно о Closure-компиляторе, и я хотел убедиться, что, по крайней мере, где-то было сказано, что компилятор не будет работать по своему желанию.

5

Я задал себе такой же вопрос и не нашел приемлемого ответа. Единственный способ объединить много файлов является положить несколько «--js» Params в командной строке:

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js 

Я пытался поставить такие строки (которые используются в пользовательском интерфейсе службы Closure Compiler):

// ==ClosureCompiler== 
// @code_url 1.js 
// @code_url 2.js 
// @code_url 3.js 
// ==/ClosureCompiler== 

... в «main.js» и скомпилировать его - никакого эффекта. :(

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