Recommended approach/framework for creating a CesiumJS application? (2023)

Hey @mcmuffin6o :wave:

The application you are trying to build sounds interesting!

Should I make it web-based, or browser-based? If I go with a desktop-based approach, is Electron a good choice? Is it possible to make use of the GPU either way? (I dislike how my laptop’s fans spool up like an F119 every time I open a webpage with a CesiumJS viewer in it.)

I think that since you want multiple windows and file I/O, you should go with one of the following options:

  • Electron
  • Progressive Web Apps (PWA)

I would prefer the former but PWAs have also advanced dramatically during the last years. Google is currently developing Project Fugu that enables even more desktop capabilities for PWAs.

Do I need to use a framework such as Angular/React/Vue, etc.? There’s a page on the Cesium website about webpack, but it warns that the information contained within may be outdated.

The choice of the framework should not be very important. I would say that use a JavaScript framework that suits you best and is more convenient for you. For example, as an Angular expert, I would probably build it with Angular :slightly_smiling_face: At the end of the day, all JavaScript frameworks do pretty much the same job. The page that you mentioned about Webpack contains also a link to the accompanying GitHub repository where you can find more up to date information.

Is TypeScript a good idea for CesiumJS applications?

I think that TypeScript is generally a good idea for newcomers to the web ecosystem that come from other languages such as C# or C++. It gives you many OOP techniques that you find in other languages as well.

Should I simply use Rust to generate webassembly for an Electron app? Would such a three-element approach be sufficient for my goal of being able to open new windows that are capable of IPC and file I/O?

Since you are already familiar with Rust, you should definitely consider it as an option. WebAssembly is very performant and a popular choice. Even Blazor has the option to build web apps with it.

Should I be using CesiumJS at all? I can’t even find the documentation on what type(s) entity.orientation can be assigned to, and The state of the CZML documentation is worrying, to say the least.

I guess so since you want a Cesium viewer :wink:

I hope my answers will help you. Let me know if you have any additional questions :smiley:

1 Like