以下职位激励我看看limeJS,作为辅助项目我工作和关闭的一个Yatzee游戏(主要是关闭),并认为这可能是一个不错的库来使用。
正如谷歌闭合初学者我有运行未编译代码,并获得编译代码,主要是因为不知道什么选项和命令是因为依赖的一些困难。
对于与谷歌,closuse其他初学者我写了这个教程。
需要注意的是jQuery的可以通过你的闭合编译的代码中使用,但您需要的jQuery的实习医生文件 。 你不能编译的jQuery到你的代码,封库有一个穿着下来道场可以在THIRD_PARTY找到。 使用时,你可以编译代码到一个文件中。
您需要:
- 蟒蛇
- Git的客户端
- Closure编译器编译代码(涅槃和合并所有文件为一个)
- 封库像jQuery和jQuery UI,但可以与您的代码一起编译
- Python的(我用2.7)
- LimeJS作为第三方库(使用git客户得到它,网址: https://github.com/digitalfruit/limejs.git )
- JAVA JRE
目录结构
我在d使用Windows,并有我的项目:\项目,如果你有你的项目在其他地方,你必须更换d:\项目引用到自己。
在d:\项目,我做了一个名为该目录中我复制goog和闭合库THIRD_PARTY目录(goog是封闭目录下)库目录,因为你将使用这些很多项目我把它在项目的根,你可以包括它在你创建的每一个项目副本,但在这种情况下,我会分享所有项目中的库。
现在我从limeJS([石灰克隆DIR] \灰\ SRC)复制src目录的内容d:\项目\库\石灰(一个包含子目录称为动画,音频...)。
接下来,我将使用来自limeJS库中的现有项目,复制[石灰克隆DIR] \灰\演示\ roundball到d:\项目\ roundball
这时你的目录结构应该是这样的:
- d:
- 项目
- 图书馆
- goog
- 酸橙
- 动画
- 音频
- CSS
- ...
- 第三方
- 关闭
- ...
- 关闭
- 圆球
- 资产
- ...其他roundball东西
- 图书馆
- 项目
cacldeps.py
当您打开d:\项目\ roundball \ rb.html,并检查了(在Chrome或FireFox的优选为萤火虫插件安装按F12)控制台,你会看到一个错误:“的ReferenceError:未定义goog”
打开d:\项目\ roundball \ rb.html和变化:
<script type="text/javascript" src="../../../closure/closure/goog/base.js"></script>
至
<script type="text/javascript" src="../libraries/goog/base.js"></script>
现在,当你打开rb.html你又得到一个不同的错误:“goog.require找不到:lime.Director”
这是因为封闭使用deps.js找到依赖和自石灰是不是在那里找不到它。 幸运的是我们有一个在封闭库,可以为我们创建这个文件的bin目录中称为calcdeps.py工具。 它会看在你的代码,并使用goog.require要弄清楚什么是所需的其他文件。 如果你的文件结构是好的比这个工具会发现它。
它将预计导演是在一个目录中称为石灰一个名为director.js(它是)。 这js文件应该有一个goog.provide声明提供lime.Director。
您可以添加目录的calcdeps.py在与--path参数看。
在d:\项目\ roundball我将创建一个具有以下内容的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:\项目\项目2,那么你必须创建在重新创建你的deps.js之前可以运行未编译代码项目目录makedeps.bat。 这是因为多个项目共用一个谷歌封库,因此,当您切换项目,确保你运行你未编译代码之前,先建deps.js。
解决缺少的依赖
打开rt.html我们仍然得到一个错误,但不同之一:错误:“未定义nameToPath为lime.css”
展望goog / deps.js我们可以发现是由石灰需要的lime.css但没有在deps.js.入口 为什么是这样? 展望d:\项目\库\石灰没有CSS目录或文件css.js。 但是,在你克隆git的石灰项目的目录下有一个名为CSS目录。
当你打开rt.html它将运行\项目\库\石灰和makedeps.bat再次运行,现在:复制CSS目录d。
整个事情是未编译的,你可以设置断点步入第三方代码。
编译代码
在生产中,你会希望将代码编译成一个文件。 为了编译我创建了一个d的的compile.bat代码:\项目\ 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:\项目\ roundball \编译\ roundball.html你会只roundball.js加载浏览器的开发者工具看。