OpenWebGlobe源码剖析2:Closure Library

首先说明一下,我对这个库并不了解,只是由于OpenWebGlobe用到了这个库做为他的框架,因此才有所了解,所以了解的深度有限,只是基于足够在OpenWebGlobe中使用和扩展一些自定义的文件,而且压缩打包js脚本,这些比较基础的功能。 html

       上网了解了一下这个Closure,简单说就是Google Javascript SDK,提供了一个js的framework,方便用户的扩展,closure 使用library来提高开发效率,使用侵入性极强的 compiler 来去除无用代码,保证执行效率缩减 js 的大小,看来一下这个库的一些博文,以为写的仍是颇有收获的,特别是这一篇:http://www.cnblogs.com/justinw/archive/2009/12/07/1618500.html,固然我主要是看API,这里简单说一下在OWG里面用到的地方。 jquery

       第一,我以为最有意义的是closure提供了工做空间这个概念,以往JS都是全局形式的,而经过goog.provide和goog.require,从而实现了这个功能,为大规模的JS框架提供了很大的便利。如上所述,provide相似export,而require相似import 框架

       第二,提供了closure compiler工具,能够实现高效的混淆打包,提升js的效率,并且很是方便,具备语法纠错的功能,将你的代码隐患提早暴露,也免去了你本身进行打包的工做量。 ide

       第三,对第三方的插件支持的不够好,固然我以为closure不推荐你们使用第三方的插件,好比做为初学,我开始不知道closure原来也有xml parser的方法,因此引入了jquery,源码形式下都还好,可以运行,但混淆后对jquery的关键字进行了压缩更改,致使jquery没法使用,后来才发现,须要用goog.getObjectByName()这个方式,才能保证不被替换,从而可以兼容,不过仍是稍微有点绕。 函数

       第四,有一个须要注意的就是你在增长本身的类时,须要将依赖关系整理清晰,避免循环依赖的可能性,这在js里面是没法经过语法解决的,并且因为prototype是浅拷贝,因此在涉及到类的继承时,对于Object的处理也比较麻烦,closure是采用inherits方法来实现继承的,这个是有区分的,因此根据你的设计须要选择不一样的方法来实现。 工具

       第五,用到的goog.exportSymbol和goog.exportProperty算是指定接口能够在外部调用的函数和属性,否则由于打包压缩会讲命名替换,因此若是你的接口打算对外开发就须要指定,若是只是内部使用则不须要声明。 ui

      其余,goog.events.listen,顾名思义就是一些事件监听封装,好比窗口变化,鼠标键盘等事件,若是须要则可使用,其余的prototype

什么isnull之类的我也没有查。插件

       总之在OWG中,使用了closure的基础功能,同时采用compiler压缩脚本,这样的一个框架,至此,前期的准备工做结束,下面,开始代码部分,下一节主要讲OWG的相机这块,由于比较复杂,因此先从坐标系开始讲,主要涉及大地坐标系,NED坐标系和body coordinate system这些相关概念,方便后续相机的阐述。设计

相关文章
相关标签/搜索