WIKI:如何用石灰(如何使用封编译器与第三方(关闭)库)(WIKI: How to use Lim

2019-09-02 04:50发布

以下职位激励我看看limeJS,作为辅助项目我工作和关闭的一个Yatzee游戏(主要是关闭),并认为这可能是一个不错的库来使用。

正如谷歌闭合初学者我有运行未编译代码,并获得编译代码,主要是因为不知道什么选项和命令是因为依赖的一些困难。

对于与谷歌,closuse其他初学者我写了这个教程。

需要注意的是jQuery的可以通过你的闭合编译的代码中使用,但您需要的jQuery的实习医生文件 。 你不能编译的jQuery到你的代码,封库有一个穿着下来道场可以在THIRD_PARTY找到。 使用时,你可以编译代码到一个文件中。

您需要:

  1. 蟒蛇
  2. Git的客户端
  3. Closure编译器编译代码(涅槃和合并所有文件为一个)
  4. 封库像jQuery和jQuery UI,但可以与您的代码一起编译
  5. Python的(我用2.7)
  6. LimeJS作为第三方库(使用git客户得到它,网址: https://github.com/digitalfruit/limejs.git )
  7. 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加载浏览器的开发者工具看。

Answer 1:

答案就在问题,因为它是一个HOWTO的文章,可以帮助别人(像我的未来时,我忘了如何做到这一点)。



文章来源: WIKI: How to use Lime (how to use closure-compiler with 3rd party (closure) libraries)