WIKI: Как использовать Lime (как использовать closure-compiler со сторонними (closure) библиотеками)

Следующий пост вдохновил меня взглянуть на limeJS, как на сторонний проект, который яя работаю над игрой на Yatzee (в основном выключен) и думаю, что это хорошая библиотека для использования.

Как новичок в google-closure, у меня были некоторые трудности с запуском некомпилированного кода и компиляцией кода, в основном из-за незнания параметров и команд и из-за зависимостей.

Для других начинающих с Google-Closuse я написал этот учебник.

Обратите внимание, что jQuery может использоваться вашим скомпилированным кодом замыкания, но вам нужен jQueryфайл externs, Вы можете'Чтобы скомпилировать jQuery в ваш код, библиотека закрытия имеет встроенное додзё, которое можно найти в third_party. При использовании этого вы можете скомпилировать свой код в один файл.

Что вам нужно:питонGit клиентЗакрытие компилятора для компиляции кода (минимизация и объединение всех файлов в один)Закрытие библиотеки как JQuery и JQuery UI, но могут быть скомпилированы вместе с вашим кодомPython (я использую 2.7)LimeJS В качестве сторонней библиотеки (для ее получения используйте git client, url:https://github.com/digitalfruit/limejs.git)JAVA JREСтруктура каталогов I '

Я использую Windows и мои проекты находятся в D: \ projects, если у вас есть свои проекты где-то еще, вы должны заменить ссылки D: \ projects вашими.

В D: \ projects я создаю каталог с именем библиотеки, в котором я копирую каталоги goog и third_party из библиотеки закрытия (goog находится в каталоге закрытия), так как вы 'Я буду использовать их для многих проектов. Я храню их в корневом каталоге проектов, вы можете включить копию в каждый созданный вами проект, но в этом случае яподелюсь библиотекой среди всех проектов.

Теперь я копирую содержимое каталога src из limeJS ([lime clone dir] \ lime \ src) в D: \ projects \ library \ lime (тот, который содержит подкаталоги, называемые animation, audio ...).

Следующий яВоспользуемся существующим проектом из библиотеки limeJS, скопируйте [lime clone dir] \ lime \ demos \ roundball в D: \ projects \ roundball

В это время ваша структура каталогов должна выглядеть так:

D:проектовбиблиотекиGOOGЛайманимацияаудиоCSS...третья вечеринказакрытие...roundballактивы... другие мелочиcacldeps.py

Когда вы открываете D: \ projects \ roundball \ rb.html и извлекаете консоль (нажмите F12 в Chrome или в FireFox, желательно с установленным плагином firebug), вы 'увидим ошибку: "ReferenceError: goog не определен "

Откройте D: \ projects \ roundball \ rb.html и измените:


в


Теперь, когда вы снова открываете rb.html, вы получаете другую ошибку: "goog.require не удалось найти: lime.Director "

Это связано с тем, что closure использует deps.js для поиска зависимостей, а поскольку lime не существует, он может:не могу найти это. К счастью для нас, в каталоге bin библиотеки закрытия есть инструмент с именем calcdeps.py, который может создать этот файл для нас. Это'Я посмотрю ваш код и, используя goog.require, выясню, какие другие файлы нужны. Если ваша файловая структура хороша, то этот инструмент найдет ее.

Ожидается, что Director находится в файле Director.js в каталоге с именем lime (и это так). Этот js-файл должен содержать инструкцию goog.provide, содержащую lime.Director.

Вы можете добавить каталоги для calcdeps.py для просмотра с--дорожка параметр.

В D: \ projects \ roundball I 'создам файл makedeps.bat со следующим содержимым:

set calc="D:\software\closure compiler\library\closure\bin\calcdeps.py"
c:\Python27\python.exe %calc% ^
--path D:\projects\roundball\ ^
--path D:\projects\libraries\ ^
--input D:\projects\roundball\rb.js ^
--output_mode deps ^
--output_file D:\projects\libraries\goog\deps.js
pause

Некомпилированный код использует /goog/deps.js для загрузки зависимостей. caclcdeps.py проверит ваш код, начиная с rb.js (так как это отправная точка кода), и добавит записи в deps.js в соответствии с тем, что использует ваш проект.

Еще раз, cacldeps.py можно найти в каталоге bin библиотеки закрытия.

Обратите внимание, что когда у вас есть другой проект; позволять'скажем, D: \ projects \ project2, вам нужно создать makedeps.bat в каталоге проекта, который заново создаст для вас файл deps.js, прежде чем вы сможете запустить не скомпилированный код. Это связано с тем, что несколько проектов используют одну библиотеку Google Closure, поэтому при переключении проектов убедитесь, чтоПрежде чем запускать некомпилированный код, я соберу deps.js.

Устранение недостающей зависимости

Открыв rt.html, мы все равно получаем ошибку, но другую: Ошибка: "Неопределенное nameToPath for lime.css "

Посмотрев в goog / deps.js, мы можем найти, что lime.css нужен для lime, но ненет записи в deps.js. Почему это? В D: \ projects \ library \ lime нет каталога css или файла css.js. Но в каталоге, где вы клонировали проект git lime, есть каталог css.

Скопируйте каталог css в D: \ projects \ library \ lime и снова запустите makedeps.bat, теперь, когда вы откроете rt.html, он запустится.

Все это не скомпилировано, и вы можете установить точки останова для перехода к стороннему коду.

Скомпилируйте ваш код

В производстве вы хотели бы скомпилировать код в один файл. Для компиляции кода я создал файл compile.bat в D: \ projects \ roundball со следующим содержимым:

set calc="D:\software\closure compiler\library\closure\bin\calcdeps.py"
c:\Python27\python.exe %calc% ^
--path D:\projects\roundball\ ^
--path D:\projects\libraries\ ^
--input D:\projects\roundball\rb.js ^
--compiler_jar "D:\software\closure compiler\compiler.jar" ^
--output_mode compiled ^
--compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" ^
--compiler_flags="--formatting=PRETTY_PRINT" ^
--output_file D:\projects\roundball\compiled\roundball.js
pause

;Need this flag for production compile:
;--compiler_flags="--define goog.DEBUG=false" ^
;Remove the following flag from production compile:
;--compiler_flags="--formatting=PRETTY_PRINT" ^
;lime libraries is giving me errors with stricter compilation
;  so had to remove this flag (have to fix the errors or no type checking for your code)
;--compiler_flags="--warning_level=VERBOSE" ^

Файл compiler.jar можно найти там, где вы скачали (и распаковали) закрывающий компилятор

Теперь, когда вы запустите compile.bat и откроете D: \ projects \ roundball \ compiled \ roundball.html you 'в инструментах разработчика вашего браузера вы увидите, что загружен только roundball.js.

Ответы на вопрос(1)

Ваш ответ на вопрос