码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 教程 - 深度探讨在 Vue3 中引入 CesiumJS 的最佳方式


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁) 知识定位 人群定位
    🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    目录* 1. 你应该先知道的基础知识
    + 1.1. CesiumJS 的库构成
    + 1.2. 选择 Vite3 和 pnpm 的理由
    + 1.3. 使用 External 模式引入静态库 - 不打包静态库
    + 1.4. 切勿什么都 import - 以及页面运行的时候的路径与开发时的路径

    • 2. 一步一步教你创建项目
      • 2.1. 使用 create-vue 或 vite 模板
      • 2.2. 指定版本安装 cesium 依赖
      • 2.3. 不使用锁文件
      • 2.4. 配置 External 和构建后的 index.html
      • 2.5. 静态资源复制脚本
      • 2.6. 使用环境变量配置 CESIUM_BASE_URL
      • 2.7. 使用全局状态库跨组件共享 Viewer 对象
    • 3. 伸手的看过来 - 工程下载

    由于 Vue2 已经进入维护期,且 Vue2 对待组件内的 data 是无差别使用 Object.defineProperties 递归将其劫持的,对于复杂状态的对象会造成严重的 JavaScript 访问路径过长而导致的 性能问题,这个应该是老生常谈了。

    Vue3 提供了 markRaw 函数,标记一个对象,令 Vue 不再将其视作 响应式 数据,所以本文基于 Vue3 来介绍如何引入 CesiumJS。

    心急的朋友可以直接跳过本文的介绍,拉到文末,有示例工程 zip 下载。

    1. 你应该先知道的基础知识

    除了 Vue3 和 Vue2 的响应式设计区别外,我认为还需要补充一点知识。

    1.1. CesiumJS 的库构成

    Cesium 是一个高度集成的重型 JavaScript 库,这是共识。它的源码虽然是 ESModule 格式的,但是并没有直接提供类似 index.js 的出口文件,也不存在子包的概念,只是在 Source 文件夹下简单分了几个大板块文件夹,例如 Source/Renderer 文件夹就是 CesiumJS 中整个渲染器的代码模块。

    通常,除了二次修改 CesiumJS 源代码构建自己的分支版本,一般不会在 WebAPP 中直接使用 CesiumJS 的源码。一般使用的是 CesiumJS 的 构建版本,也就是 Build 文件夹下的压缩版或未压缩版库文件。

    主库文件有三种格式,ESModule 的是 index.js,IIFE 的是 Cesium.js,CommonJS 的是 index.cjs。除了主库文件外,构成构建版本的 CesiumJS 还有 4 个文件夹下的静态资源:

    • Assets 文件夹,图片或 JSON 等前端运行时可能用到的资源
    • ThirdParty 文件夹,WebAssembly 等前端运行时可能用到的第三方资源
    • Widgets 文件夹,主要是各个 CesiumJS 自带的界面小部件的 CSS 文件
    • Workers 文件夹,前端运行时用到的 WebWorker 的构建版本(WebWorker 由于一些原因,在前端运行时仍然用 CommonJS 格式加载)

    因此,你在任何所谓的教程里面都会看到这四个静态资源文件夹的复制操作,除了 CDN 直接使用的方式。我在这里说清楚,希望你知道原因。

    1.2. 选择 Vite3 和 pnpm 的理由

    笔者是 Vite 1.0 的首批用户。尤雨溪第一次介绍 Vite 是在 Vue 3.0 测试版网络会议上,只是作为一个很小的“玩具”介绍了一下,当时的 Vite 还是与 Vue 强关联的,后来到了 Vite 2.0 才解耦合。简单的说,Vite 3.0 对 Vite 2.x 并不是破坏性更新,只是考虑到 NodeJS 12.x 已经 EOL 了,索性 3.0 就不再支持 NodeJS 12.x,其余特性笔者没特别了解。

    简单的说,使用 Vite 作为开发服务器和打包工具,不外乎几个原因:

    • esbuild 速度有目共睹
    • 中文文档齐全
    • 是 cli 的官方指定继任者

    对于开项目,我有几点建议:

    • 如果你只是写一个小的项目,可以用 Vite 官方模板;如果是 Vue3 项目,直接使用 create-v
  • 相关阅读:
    【Django】开发日报_10_Day:手机号码管理系统(8)
    【计算机毕业设计】网上游戏代练商城系统
    【软件架构文档之SOC篇】
    在Linux上安装部署JDK和Tomcat(超级详细)
    linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解
    826. 单链表
    【数值分析】复习知识点整合
    神经网络怎么解决过拟合,解决神经网络过拟合
    携创教育:自考英语二相当于什么水平?可以不考吗?
    当边缘计算用在定位设备
  • 原文地址:https://blog.csdn.net/u013190417/article/details/126552696
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号