WIKI: Como usar o Lime (como usar o compilador de fechamento com bibliotecas de terceiros (fechamento)

A postagem a seguir me inspirou a dar uma olhada no limeJS, como um projeto paralelo em que estou trabalhando e fora de um jogo da Yatzee (principalmente desligado) e pensei que poderia ser uma boa biblioteca para usar.

Como iniciante no google-closure, tive algumas dificuldades em executar código não compilado e obter código compilado, principalmente por não saber quais são as opções e comandos e por causa das dependências.

Para outros iniciantes com google-closuse eu escrevi este tutorial.

Note que o jQuery pode ser usado pelo seu código compilado, mas você precisa do jQueryarquivo externs. Você não pode compilar o jQuery em seu código, a biblioteca de fechamento tem um dojo bem vestido que pode ser encontrado em third_party. Ao usar isso, você pode compilar seu código para um arquivo.

O que você precisa:PythonCliente GitCompilador de fechamento para compilar código (minimizando e mesclando todos os arquivos em um)Biblioteca de fechamento como jQuery e jQuery ui, mas pode ser compilado junto com seu códigoPython (eu uso 2,7)LimeJS Como uma biblioteca de terceiros (use git client para obtê-lo, o url:https://github.com/digitalfruit/limejs.git)JAVA JREEstrutura de diretórios

Eu estou usando o Windows e tenho meus projetos em D: \ projetos, se você tem seus projetos em outro lugar você tem que substituir D: \ projeta referências para o seu próprio.

Em D: \ projetos eu faço um diretório chamado bibliotecas nesse diretório eu copio os diretórios goog e third_party da biblioteca de fechamento (goog está sob o diretório de fechamento) desde que você vai usá-los para muitos projetos eu mantê-lo em projetos raiz, você pode inclua uma cópia dele em todos os projetos que você criar, mas neste caso compartilharei a biblioteca entre todos os projetos.

Agora eu copio o conteúdo do diretório src de limeJS ([clone clone dir] \ lime \ src) para D: \ projects \ libraries \ lime (aquele que contém os subdiretórios chamados animation, audio ...).

Em seguida, usarei um projeto existente da biblioteca limeJS, copie o [diretório clone] \ lime \ demos \ roundball para D: \ projects \ roundball

Neste momento, sua estrutura de diretório deve ficar assim:

D:projetosbibliotecasgoogLimaanimaçãoáudiocss...terceirofecho...bola redondaativos... outras coisas de bola redondacacldeps.py

Quando você abre o D: \ projects \ roundball \ rb.html e verifica o console (pressione F12 no Chrome ou no FireFox preferencialmente com o plugin do firebug instalado) você verá um erro:"ReferenceError: goog não está definido"

Abra D: \ projects \ roundball \ rb.html e mude:

<script type="text/javascript" src="../../../closure/closure/goog/base.js"></script>

para

<script type="text/javascript" src="../libraries/goog/base.js"></script>

Agora, quando você abrir o rb.html novamente, receberá um erro diferente:"goog.require não conseguiu encontrar: lime.Director"

Isso ocorre porque o encerramento usa deps.js para localizar dependências e, como o cal não está lá, ele não consegue encontrá-lo. Para nossa sorte, existe uma ferramenta chamada calcdeps.py no diretório bin da biblioteca de fechamento que pode criar esse arquivo para nós. Ele vai procurar no seu código e usar goog.require para descobrir quais outros arquivos são necessários. Se a estrutura do seu arquivo for boa, esta ferramenta irá encontrá-lo.

Ele espera que o Director esteja em um arquivo chamado director.js em um diretório chamado lime (e é). Esse arquivo js deve ter uma instrução goog.provide fornecendo lime.Director.

Você pode adicionar diretórios para calcdeps.py para procurar--caminho parâmetro.

Em D: \ projects \ roundball eu vou criar um makedeps.bat com o seguinte conteúdo:

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

O código não compilado usa /goog/deps.js para carregar dependências. O caclcdeps.py verificará seu código começando com rb.js (já que este é o ponto inicial do código) e adicionará entradas ao deps.js de acordo com o que seu projeto usa.

Mais uma vez, o cacldeps.py pode ser encontrado no diretório bin da biblioteca de fechamento.

Observe que quando você tem outro projeto; digamos que D: \ projects \ project2 então você tem que criar um makedeps.bat nesse diretório do projeto que cria novamente o deps.js antes que você possa executar o código não compilado. Isso porque vários projetos compartilham uma biblioteca de fechamento do google, portanto, quando você alterna projetos, certifique-se de criar o deps.js antes de executar seu código não compilado.

Resolvendo Dependências Perdidas

Abrindo o rt.html nós ainda recebemos um erro mas diferente: Erro:"NameToPath indefinido para lime.css"

Olhando para o goog / deps.js, podemos ver que o lime.css é necessário pelo cal, mas não tem uma entrada no deps.js. Por que é isso? Procurando em D: \ projects \ libraries \ cal não existe um diretório css ou um arquivo css.js. Mas no diretório onde você clonou o projeto git lime existe um diretório chamado css.

Copie o diretório css para D: \ projects \ libraries \ cal e execute o makedeps.bat novamente, agora quando você abrir o arquivo rt.html, ele será executado.

A coisa toda é uncompiled e você pode definir pontos de interrupção para entrar no código de terceiros.

Compile seu código

Na produção, você gostaria de compilar o código em um arquivo. Para compilar o código criei um compile.bat em D: \ projects \ roundball com o seguinte conteúdo:

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" ^

O compilador.jar arquivo pode ser encontrado onde você baixou (e extraído) compilador de fechamento

Agora, quando você executar o compile.bat e abrir D: \ projects \ roundball \ compilado \ roundball.html, você verá nas ferramentas do desenvolvedor do seu navegador que somente a roundball.js é carregada.

questionAnswers(1)

yourAnswerToTheQuestion