使用Google Closure DepsWriter生成JS依赖文件(二)
使用ClosureBuilder 可以压缩JS文件,减小JS的大小。但是,当使用未压缩的源码时,需要使用到goog.require()来匹配需要的命名空间并且在页面中追加<script>标签来加载需要的JS文件。
当使用的是ClosureLibrary中的命名空间时,ClosureLibrary默认为在deps.js去查找所需要的依赖。deps.js每一行记录着相应的命名空间和其所需要依赖以及与base.js的相对路径。
在这个示例中,我们将要学习如何使用DepsWriter来生成myproject的JS依赖文件及其使用方法。
准备:
1.使用Google Closure Library压缩JS文件(一) 中写好的start.js文件
2.DepsWriter.py
首先,在命令行窗口下进入Closure Libaray和myproject所在的目录,执行以下命令:
python closure/closure/bin/build/depswriter.py --root_with_prefix="myproject ../../../myproject" > myproject-deps.js
其中 --root_with_prefix是由工程名称和工程所在的路径组成。工程的路径是相对路径,相对于closure中的goog文件夹而言,具体需要向上返回几组目录,根据实际情况而定。
例如相对路径为“/”,则页面引用myproject-deps.js后,完整的路径为:“closure/closure/goog//start.js”,此时需要向中返回三级目录。
执行过命令后,将在myproject外生成的myproject-deps.js,内容为:
1 // This file was autogenerated by depswriter.py. 2 // Please do not edit. 3 goog.addDependency('../../../myproject/start.js', ['myproject.start'], ['goog.dom'], false);
'../../../myproject/start.js' 这是以base.js所在的文件夹生成的相对路径;
['myproject.start'], ['goog.dom'] 这是start.js中的命名空间及引用的命名空间
接着:把myproject-deps.js复制到myproejct文件夹下,新建一个testGeneratedDependency.html文件,引入base.js,myproject-deps.js,内容如下:
1 <!doctype html> 2 <html> 3 <head> 4 <script src="../closure/closure/goog/base.js"></script> 5 <script src="myproject-deps.js"></script> 6 <script> 7 goog.require('myproject.start'); 8 </script> 9 </head> 10 <body> 11 <!-- content --> 12 <script> 13 myproject.start(); 14 </script> 15 </body> 16 </html>
至此,DepsWriter的示例完成。
引用地址:https://developers.google.com/closure/library/docs/depswriter