什么是最轻的使用铯的方法?

j_d*_*j_d 9 javascript cesium

我有兴趣使用Cesium来构建带有自定义磁贴的3D地球,但是根据这里"入门"说明,似乎你必须下载一个巨大的30mb目录并在你的项目中包含整个东西才能拥有它运行正常.这是真的?我可以不只是包含Cesium.js并像这样运行吗?我不需要它们包含80%的UI元素.

在"入门"教程结束时,它们似乎表明您需要运行的所有内容都是这些位:

<script src="Cesium/Cesium.js"></script>

@import url(Cesium/Widgets/widgets.css);

<div id="cesiumContainer"></div>

var viewer = new Cesium.CesiumViewer('cesiumContainer');
Run Code Online (Sandbox Code Playgroud)

但是当我设置这些位时,我得到这个错误:"未定义定义"和"未定义铯".

运行Cesium最轻的方法是什么?

Mat*_*ato 9

该教程肯定需要更新,我会做一个注意清理它.(对于初学者来说,底部有一个错误,因为Cesium.CesiumViewer应该只是Cesium.Viewer.)话虽这么说,这里是拉链中包含的内容以及实际开发需要/需要的内容.

  • 应用 - >示例应用程序.
  • Source - >用于示例应用程序的AMD模块,用于基于模块的开发(requirejs,browserify等).
  • 规格 - >单元测试.
  • ThirdParty - >上述所需的第三方库.
  • 构建/应用程序 - >采样应用程序的内置和缩小版本.
  • 构建/文档 - >参考文档.

这留下了两个目录,Build/CesiumBuild/CesiumUnminified,我将在一分钟内讨论.

但首先,对于您的问题,技术上正确的答案是创建最轻的基于Cesium的应用程序,使用我们提供的AMD模块.这意味着您只需要在开发时包含Source文件夹,然后您的构建过程将创建应用程序的缩小和连接版本以进行部署.使用模块确保您只包含您正在使用的Cesium功能.这与"传统"Web开发实践不同,即通过页面底部的脚本标记以正确的顺序包含所有代码和库的缩小版本.模块每天都在增长,而ES6和像Babel这样的构建系统正在慢慢接管Web开发环境.我们自己使用requirejs,但有很多选择.

以这种方式构建的应用程序示例是Build\Apps\CesiumViewer中的Cesium Viewer示例(源代码位于Apps\CesiumViewer中).整个构建的应用程序(未压缩)为8.77 megs,几乎暴露了每个Cesium功能和功能.3.65兆这是默认情况下发布的自然地球图像和其他数据文件,如果您使用触发它的功能,应用程序只会根据需要向下滑动.通过在服务器端压缩压缩,大大减少了剩余的JavaScript.要自己查看,请运行最新的Cesium Viewer 链接,然后在浏览器开发工具中打开网络选项卡.整个应用程序仅吸收2.2兆(这包括从Bing加载的初始图像.Cesium部分只有大约426kb.如果你开始加载GeoJSON或KML文件,它可能会减少一些额外的kb,但不是很多.

由于基于模块的方法需要额外的设置,并且在整个Web开发中仍然不常见,我们还提供Build/Cesium和Build/CesiumUnminified文件夹.这些包括完全缩小和连接的Cesium版本,它们将所有模块都压缩到一个文件中.但是,您需要的不仅仅是Cesium.js文件以进行部署.这是这些文件夹的细分:

  • 构建/资产 - > Cesium附带的默认图像/资产(用于ICRF转换的图像/图标/星形/数据).根据您配置Cesium应用程序的方式,根据需要下拉该数据.它是3.65兆,但chanes是你的应用程序只会触及几kb(取决于你使用的功能).我建议部署整个目录,而不是尝试确定部署到服务器的内容(但正如我所说,客户端可能永远无法检索大部分目录).
  • Build/WorkersBuild/ThirdParty - >这些包含Cesium使用的连接Web工作者.这包括图像/地形使用的代码,几何曲面细分和zip文件处理.它被按需拉下来,即使你做了一些需要全部的东西,仍然是一个巨大的gzip.由于WebWorkers的性质,这些文件不能包含在主Cesium.js中(我们认为这是规范中的一个难点).
  • Build/Widgets - >包含连接的CSS,包括inidividual widget窗体和组合的widgets.css文件.我建议只包括widgets.css并完成它(4kb gzipped); 但如果您真的关心大小,可以删除单个css文件.此文件夹还包含各种小部件使用的图标.再次,只有在需要时才从服务器检索它们.

正如他们的名字建议,这两个Build/CesiumBuild/CesiumUnminified是几乎同样的事情.主要区别在于Build/Cesium已经缩小并且更小.它也更快,因为它删除了大量的调试代码以提高性能.我们的官方建议是针对CesiumUnminified开发并使用Cesium进行部署.这将使开发更容易,因为如果代码中存在问题,您将获得更好的错误处理和callstack.

以这种方式构建的应用程序的示例是Hello World应用程序链接.实际上与我上面链接的构建的Cesium Viewer应用程序没有太大的差异,但这是因为它们本质上是以两种不同方式构建的相同应用程序.

所以这个答案最终比我想要的要长很多,但Web开发是多种多样的,Cesium试图尽力支持所有不同的方法.铯本身也非常雄心勃勃,所以我们必须克服其他项目从未遇到过的许多障碍.绝对有改进的余地,但我们会尽力确保Cesium在提供它所具有的功能的同时尽可能轻松.我认为在2.0版本中我们可能会更进一步,并尝试使事情更加模块化.

我希望能回答你的问题和疑虑.