一、    背景前述

因为Cesium在国内的三维开发占据很大一部分,很多公司使用开源版本进行开发,有修改源码和创建分支需求,在跟随主版本升级的同时有需要维护一套自己的版本。

二、    项目的文件路径介绍

路径

说明

Apps

调试页面

Build

打包存放目录

Documentation

API文档

launches

Eclipse外部工具环境构建配置,直接为服务器运行node

Source

功能源码

Specs

单元测试集

ThirdParty

第三方插件

Tools

打包、代码检查、jsdoc工具

CHANGES.md

版本的变更记录以及每个版本修复了哪些功能

gulpfile.cjs

打包配置,包括GLSL语法的转义、压缩和未压缩库文件的打包、API文档的生成以及自动化单元测试等

index.html

Web导航首页

package.json

描述这个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息,格式是严格的JSON格式

README.md

项目的入门手册,介绍整个项目的使用、功能

server.cjs

Cesium内置的Node服务器文件,命令npm run start以及npm run startPublic实际上执行的文件。

web.config

Web应用程序的配置信息

三、    基础模块介绍

路径

说明

Source/Assets

一些纹理,图片的静态资源

Source/Core

基础核心类,事件、颜色、矩阵、几何对象等等

Source/DataSources

数据源,包括数据对象、数据集,数据集合等等,geojson,czml

Source/Renderer

渲染类,调度纹理,shader,缓冲区、顶点属性等等

Source/Scene

场景类,相机、模型加载器,地球、大气、相机、图层等等

Source/Shaders

静态Shader文件,shader模板

Source/ThirdParty

第三放插件,workers,knockout等等

Source/Widgets

Cesium的UI控件,时间轴、信息框、地图选择器等等

Source/Workers

工作线程,主要用于几何体的创建define定义(Web Workers可以在JS中支持多线程开发)

Source/WorkersES6

ES6工作线程import导入

四、    Cesium模块结构

模块化的两种手段:1、ES6特性,模块化—export/import对模块进行导出导入的;2、AMD-异步模块定义—定义模块

模块结构参考API文档理解http://www.zgeo.work/cesiumTx/Documentation/index.html

模块化的优势:避免命名冲突(减少命名空间污染);更好的分离,按需加载;高复用性;高可维护性

五、    关于版本

1、    Cesium-version.zip 生成包

2、    Source code.zip 源码包

六、    推荐学习

1、    WebGL2 理论基础https://webgl2fundamentals.org/

2、    OpenGL 教程https://learnopengl-cn.github.io/

3、    Unreal Engine教程https://www.unrealengine.com/zh-CN/onlinelearning-courses

4、    Rollup中文文档 https://www.rollupjs.com/

5、    gulpjs自动化构建工具https://www.gulpjs.com.cn/

七、    项目内网部署

为什么?外网访问慢不稳定,开发包下载更慢,不能及时获取版本,另外有部分内网开发需求。

1、    自动化流程部署:

Jenkins+gitlab/github+定时/SCM构建+Docker镜像部署(nginx)

GitLab CI/CD+Docker镜像部署(nginx)

2、    自动化软件介绍:

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

功能

JENKINS

GITLAB CI/CD

开源 / 商业性

开源

开源

产品类型

自托管 / 本地部署

自托管 / 本地部署

内置 CI/ CD

Jenkins 根据需求支持 CI/CD

我们不需要为了 CI/CD 而安装任何东西,这是一个内置功能

独特功能

插件

自动化 DevOps/ 允许持续集成和代码管理在同一个地方进行。

支持 / SLA

没有官方支持或 SLA

Yes

安装配置

简单

简单

自托管选项

开源软件和自托管是使用它的唯一方法

Yes

构建 Pipelines

通过 Jenkins Pipeline DSL 自定义 pipeline

Yes

应用程序性能监控

没有提供用于分析性能的功能

展示所有部署的应用程序的性能指标

生态系统

1000 个社区插件

Yes

全面的 API

提供了全面的 API 功能

提供了在软件项目中进行深层集成的 API

特定语言支持:JavaScript

Yes

Yes

集成

允许与其它工具集成(例如:SlackGitHub

很多第三方集成都可以访问,最著名的是 GitHub Kubernetes

CI/ CD 部署面板

部分支持项目中的 CI CD 功能

可以根据项目中的 pipeline 历史和最近状态为每一个用户更改一个单独的面板

API

Yes

Yes, 提供了一个 REST API & 一个(新的)GraphQL API

代码质量

通过 Sonarqube 插件以及其它可以用来验证代码质量的不同插件来提供代码质量检查。

GitLab 也提供了一个功能来仔细检查代码的质量。

发表评论

邮箱地址不会被公开。 必填项已用*标注