cesium源码目录结构
本文讲解的是cesium1.94.3版本的源码的结构(构建后),项目启动后直接运行index.html
一、Apps
基于 Source 目录下的源码直接创建出来的现成应用程序。
包含HelloWorld.html、CesiumViewer/index.html、Sandcastle(沙盒)的各种示例等程序,项目启动后可直接进行访问。
二、Build
运行npm run build或其他打包指令后,这个文件夹才会出现。
Build/Cesium 这个文件夹就是其他项目开发可以直接引用的脚本,包含四大静态资源文件Assets、ThirdParty、Widgets、Workers。
CesiumUnminified 是未压缩版本。
Documentation 打包构建的开发者文档。
三、 Documentation
开发者API文档
四、Specs 目录
测试代码目录。子目录结构与 Source 下的基本一样,要测试某个模块,则测试文件以那个模块的文件名 + Spec 尾缀
测试框架是 jasmine-core。
五、ThirdParty 目录
第三方依赖库,CesiumJS 不希望安装在 node-package-dependencies 列表中的就放在这里,手动升级,并将依赖列表写入根目录下的 ThirdParty.extra.json 文件内。
每当执行 run prepare 后,gulp 就会把这个目录里面的一些资源(测试框架、Draco 库等)复制到指定位置。
六、 Tools 目录
gulp 部分任务需要用到的工具库或配置,例如 rollup 额外配置、jsdoc 配置等。
七、Source 最重要的在这里!!
CesiumJS 的前端库部分,主要就是在 Source 目录下的。目前,Source 目录下的代码文件绝大多数已完成 ESModule 改造,含少量 css 文件。
虽然几乎所有的源码都是 ESModule 的,但是这个 Source 目录并没有 node 包经典的索引文件 index.js;Source 目录的入口索引文件,是要运行 build 指令后才会出现的,文件名是 Cesium.js;这个入口索引文件也没什么东西,主要是导出源码中的所有模块,无论公开私有,以及着色器字符串,以及当前 CesiumJS 的版本号。
下面对 Source 目录的各个子文件夹作说明:
1、Core 辅助
数学 API、Geometry API、高频辅助函数、资源与请求 API、Terrain API 等;
2、Renderer,渲染模块
封装并扩展了 WebGL 原生接口,例如 Framebuffer 对应 WebGLFramebuffer 等;
3、Scene,场景模块
基于上述 Core 模块和 Renderer 模块,CesiumJS 的三维世界由此模块创建,包括 Primitive API、Model API、Globe/QuadtreePrimitive API、GPUPicking API、3DTiles API 等重要 API,通常称之为 Scene 模块,是 CesiumJS 的基石;含 ModelExperimental 新架构和 GltfPipeline 子模块;
4、DataSources
基于上述 Scene 模块中较为底层的三维 API 再次封装出来的上层 API,包括 Entity API、Property API 和 DataSource API,旨在更易接入人类友好型数据格式,例如 Gpx、KML、GeoJson 以及 CesiumJS 官方设计的 Czml,熟读之后可以自行创建,这三个 API 要结合 Viewer 使用,单独的 Scene 模块无法运行;
5、Shaders 着色器代码
后缀名是 .glsl 的着色器代码文件,build 指令运行后生成同名的 ESModule js 模块文件,导出着色器代码的字符串;
6、Assets 静态资源
图片等静态资源,例如默认天空盒、离线两级世界影像(TMS)等
7、ThirdParty 第三方库
例如 draco 解码库以及相关的 worker 等;
8、Widgets
带 UI 的一些功能型类,例如大家熟悉的 Viewer、Timeline、BaseLayerPicker,样式文件也在此目录下;
9、Worker & WorkerES6
WebWorker 文件,后者是源码,前者是根据后者在运行 build 指令后生成的 requirejs 版本。
其他:更高版本的Cesium主要源代码不是在Sources目录里的,而是存在于packages文件夹里
packages下的engine文件夹下是核心代码,包括渲染函数、数据API等
packages下的widgets文件夹下是窗体代码,包括Viewer和各种组件等