很高兴你能在浮躁的年代里还有兴趣阅读源代码,CesiumJS 至今已有十年以上,代码量也积累了三十多万行(未压缩状态)。
我也很荣幸自己的文章能被读者看到,如果对你有帮助、有启发,点个赞就是对我最大的鼓励,感激不尽。本系列文章写于 2022 年,梳理的是 CesiumJS 前端库中的主要源码结构,不涉及着色器原理、WebGL 效果原理剖析等内容较为专一、可以独立出文的内容。
1. 源代码工程目录详解
前置说明
- 当我在说“xx指令”时,指的是
package.json
下的 node-script(即scripts
列表中的某一个),可以使用 npm、yarn 或者 pnpm 运行; - 当我在说“开发者页面”时,指的是你将源码工程的依赖下载下来,启动
start
指令,启动本地开发服务器,打开的那个主页; CesiumJS
指的是Source
文件夹下的前端库源代码 + 测试代码 + 前端静态资源 + 构建与源代码开发工具的统称,前端库即Cesium.js
只是CesiumJS
的主要构建产物。
① 根目录下
gulpfile.cjs
:gulp 的配置文件,有好几个 node-script 是与里面的 gulp 任务关联的;CONTRIBUTORS.md
:所有参与过 CesiumJS 项目的贡献者名单;CHANGES.md
:发布日志;index.html
&server.cjs
:CesiumJS 这个工程使用了express
这个库,允许你使用start
这个 node-script 启动本地 express 服务器,默认端口是 8080,打开开发者页面,也就是 index.html;CONTRIBUTING.md
:如何参与贡献,也就是开发者或者 bug 发现者的指导书;.husky
:CesiumJS 使用 husky + lint-staged + prettier 来管理代码风格;
② Source 目录
CesiumJS 的前端库部分,主要就是在 Source 目录下的。目前,Source 目录下的代码文件绝大多数已完成 ESModule 改造,含少量 css 文件。
虽然几乎所有的源码都是 ESModule 的,但是这个 Source
目录并没有 node 包经典的索引文件 index.js
;Source
目录的入口索引文件,是要运行 buil