【VUE】process.env,require,vite.config.js等问题的解决

news/2024/5/5 22:49:19/文章来源:https://blog.csdn.net/pfourfire/article/details/126938160

一、简介

这个系列是想将自己做过的Cesium项目整理回顾,同时也希望能给看到的文章的朋友一点帮助。大部分内容规划都是简单的功能应用,后面可能会选我自己感兴趣的功能做分享。

本文主要介绍工程的技术选型,环境搭建和代码的简单实现。首先解释一下为什选择Craco。

我喜欢直接用 create-react-app 的搭建功能,不喜欢自定义太多,所以不想把工程 eject。所以craco 是不改工程默认设置下配置Webpack的很好的解决方法。

React 中使用实现目前我了解到的解决方案有两种:

1)resium, 我简单resium提供一套比较方便的接口组件,确实很容易上手,但是缺点可能是不如直接像SDK里面那种方式来的灵活;

2)craco-cesium 环境配置多个几个步骤,但总体上来说使用方法能接近于用在html中或者直接用webpack搭建工程那样直接使用cesium。我看工程本身也比较久了最先版是2019年的,如果将来create-react-app将来升级到webpack5等,可能这种方法存在风险。但显示用的话没问题。

因此,下面要讲的就是基于craco-cesium在create-react-app工程中使用cesium。

二、工程搭建

1. create-react-app

创建React工程,这里我使用了typescript的模版,主要是为了练习typescript使用。实际工作需要根据需求与资源情况来决定是使用JS还是TS。

yarn create react-app cesium-in-react --template typescript 

工程建好后,调整一个目录结构,也可以按自己的习惯组织

2. craco与craco-cesium

安装 craco,craco-cesium。 craco-cesium 用起来很容易,直接参考文档就行。

yarn add @craco/craco craco-cesium cesium resium 

安装好了之后需要处理两个地方:

1.修改 package.json 中的运行脚本

{// ..."scripts": {"start": "craco start", // react-scripts -> craco"build": "craco build", // react-scripts -> craco"test": "craco test", // react-scripts -> craco"eject": "react-scripts eject"},// ...
} 

1.配置Craco,在根目录下创建craco.config.js,然后配置craco-cesium

module.exports = {plugins: [{plugin: require("craco-cesium")()}]
}; 

文档里面只有一个问题 Enabling HMR 应该是不用自己配置了。新版的的Create-React-APP 以及是支持了的。按章文档的会有问题

3. react-router

这个没什么好说的,安装引入之后把路由都配置好。

yarn add react-router-dom@6 

4. less

我比较习惯使用Less所以需要在工程里面启用 Less,同样也是需要通过craco处理less样式文件的解析。这里用到到的是 craco-less

yarn add craco-less 

然后在craco配置文件中使用配置

module.exports = {plugins: [{plugin: CracoCesiumPlugin(),},{plugin: CracoLessPlugin,options: {lessLoaderOptions: {lessOptions: {modifyVars: {"@primary-color": "#00b87e",},javascriptEnabled: true,},},},},],
}; 

三、代码实现

1. 关键技术点

代码实现时主要是有两点需要注意

1)代码实现思路很简单,大致实现步骤为:页面初始化加载→监听到承载Viewer的DOM元素已加载完成→Viewer地图窗口初始化

2.承载Viewer的DOM元素样式要保证有一定的尺寸并且可见,简单点就是要元素本身要能看见,不然就算地图窗口初始化成功了也看不见

3)Viewer的实例需要用useRef来存,不然后面拿不到正在的地图窗口的实例,这点很重要。原因参考react useRef。参考

useRef returns a mutable ref object whose .current property is initialized to the passed argument (initialValue ). The returned object will persist for the full lifetime of the component.

2.代码实现

// src/routes/StartUp/index.tsximport React, { useEffect, useRef } from "react";
import "./startUp.less";
import { Viewer } from "cesium";const StartUp = () => {const csmViewerRef = useRef<null | Viewer>(null);const viewerContainerRef = useRef(null);useEffect(() => {if (viewerContainerRef.current && !csmViewerRef.current) {csmViewerRef.current = new Viewer("csm-viewer-container");}}, [viewerContainerRef]);return (<divclassName="csm-viewer-container"id="csm-viewer-container"ref={viewerContainerRef}></div>);
};export default StartUp; 

四、总结

Cesium 在react中的使用起步是比较简单的,尤其是 craco-cesium 除了最麻烦的cesium引用的问题。初学者不一定一开始就用这个方案,因为这个方案要求你对Cesium和React都要有一定的熟悉程度,而且可能也在未知的问题。我也是试试看 ^ ^ 后面会继续分享常见GIS功能在 Cesium 中的实现,比如各类图层加载,地图上的 Popup Window,测量等。

最后,最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_10288.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security(一)- SpringSecurity 框架简介

文章目录一、SpringSecurity 框架简介1. 概要2. Spring Security 与 Shiro 对比2.1 Spring Security2.2 SpringSecurity特点2.3 Shiro2.4 Shiro特点2.5 小结3. SpringSecurity项目模块和依赖二、SpringSecurity 入门案例1. 添加相关依赖2. 运行项目3. 权限管理中的相关概念&…

大字节数组和 MemoryStream 的替代方案

发表于2019 年 12 月 9 日 在 .NET 中,处理二进制数据时通常使用字节数组;例如,在方法之间传递文件的内容、编码/解码文本、从套接字读取数据等。这些数组可能会变得非常大(最大为兆字节),OutOfMemoryException如果运行时无法运行,最终可能会导致被抛出分配足够大的内存…

redis数据结构基本语法

Redis Study 学到技巧 快捷键 ctrl [ typora很好用&#xff0c;有个问题就是换行会自动跟上面的格式&#xff0c;按删除键也无效 ctrl [就会把前面的格式给稀释掉。 经验 有关typora上传博客园图片缩放的问题,办法就是在typora中粘贴图片以后发现缩放没有效果&#xf…

Windows中使用SMB共享文件夹

SMB共享文件夹 简单步骤:打开【控制面板】 打开【启动或关闭windows功能】 打开【SMB1.0/CIFS 文件共享支持】 重启电脑 到磁盘中选择需要共享的文件夹 选中文件夹【属性】-> 【共享】->【共享】->添加【Everyone】用户 -> 权限【读取/写入】->确定共享 打开【…

那么我们应该如何优化Youtube的视频呢?

除了ins&#xff0c;Facebook&#xff0c;Twitter这类日常发帖分享型的社交网站外&#xff0c;还有其他的视频类网站也可以用于跨境电商的营销推广。作为视频类的社媒网站&#xff0c;YouTube可以说是全球第一大视频类社媒营销网站&#xff0c;在拓展视频内容的同时&#xff0c…

第3章 Kafka架构深入

3.1 Kafka工作流程及文件存储机制 Kafka中消息是以topic进行分类的&#xff0c;生产者生产消息&#xff0c;消费者消费消息&#xff0c;都是面向topic的。 topic是逻辑上的概念&#xff0c;而partition是物理上的概念&#xff0c;每个partition对应于一个log文件&#xff0c;该…

java线程池

目录 一、浅谈对线程池的理解 二、线程池常用类和接口 三、线程池的核心参数 四、线程池的状态 五、线程池的执行流程 六、常见的线程池 FixedThreadPool&#xff1a;线程数固定的线程池 CachedThreadPool&#xff1a;可缓存线程池&#xff0c;线程数根据任务动态调整的…

肯德尔(Kendall)相关系数概述及计算例

目录 1. 何谓相关&#xff08;correlation&#xff09;? 2. 肯德尔相关 3. 肯德尔相关的假设 4. 计算公式及代码示例 4.1 Tau-a 4.2 Tau-b 1. 何谓相关&#xff08;correlation&#xff09;? 相关是指一种双变量分析&#xff08;bi-variate analysis&#xff…

不知道数字化转型有什么意义?实现数字化转型价值都有哪些路径

近些年来&#xff0c;随着人工智能、云计算、大数据、物联网、区块链等新一代前沿技术的普及应用&#xff0c;社会的方方面面都有了信息化、数字化的身影&#xff0c;并通过相关技术、理念、应用创造了从未体验过的数字化社会&#xff0c;对整个社会形式进行了一次深层次的转型…

JVM原理及优化_垃圾回收器

文章目录JVM原理及调优_垃圾回收器什么是垃圾收集器&#xff1f;垃圾回收器详解SerialParNewParallel ScavengeSerial OldParallnel oldCMSG1JVM原理及调优_垃圾回收器 什么是垃圾收集器&#xff1f; 垃圾收集器是垃圾回收算法&#xff08;引用计数法、标记清除法、标记整理法…

PLM是什么?为什么要上PLM?有什么好处?

PLM是什么&#xff1f;或许早在五年前还有这个疑问&#xff0c;但如今已成为行业竞争的必需品。 PLM即对产品从创建、使用到最终报废&#xff0c;是一种对全生命周期产品数据信息进行管理的理念&#xff1b;是一种应用于在单一地点的企业内部、分散在多个地点的企业内部&#…

SpringBoot JavaBean对象拷贝 orika

前言: 日常开发中&#xff0c;经常会遇到将一个对象bean值复制到另一个bean,一般通过set方法一个一个属性写上去&#xff0c;比较麻烦。当然也有spring、apache的属性拷贝工具,这里介绍一下orika orika 是什么? Orika 是一个 Java Bean 映射框架&#xff0c;它可以递归地将数…

Oracle 11g第一次启动SQL Developer所出现的问题

Oracle 11g第一次启动SQL Developer提示缺少快捷方式 1)问题复刻 当第一次启动SQL Developer的时候提示我 :“Windows 正在查找SQLDEVELOPER.BAT。如果想亲自查找文件,请单击"浏览” 。这个时候如果没有点击浏览,过一会他会自动跳到图二,此时就算点击了修复也无济于事…

zabbix服务器搭建

文章目录zabbix1. 环境准备2. zabbix服务器安装3. 监控本机4. 通过zabbix-agent监控远程机器5. zabbix用户与用户群组6. 监控项与应用集7. 为监控项创建图形8. 自定义监控项9. 为自定义监控项创建图形10zabbix zabbix官网 1. 环境准备 主机ipzabbix_server192.168.44.10agen…

什么是自动采矿卡车autonomous mining trucks

自动采矿卡车 (AMT) 是无人驾驶的矿山重型车辆&#xff0c;可以感知环境并在矿山运输路面上导航&#xff0c;无需任何人工干预。AMT 降低了设备与辅助设备或配备的手动车辆 (EMV) 接触的风险。 矿业在世界经济中发挥着重要作用。随着发达国家追求零伤亡&#xff0c;进入技术工人…

Jenkins Pipeline项目实战

一、项目流程 Jenkins从git拉取指定tag代码 Jenkins构建代码、镜像以及推送镜像到镜像库 Jenkins通过Publish Over SSH通知远程服务器拉取镜像、远程服务器通过镜像启动容器二、实现流程 1、从代码仓中拉取Jenkinsfile文件 2、从git拉取指定tag代码 配置Git参数: 剩下的部分需…

Spring学习的第二天

1. Spring 管理第三方资源导入Druid 坐标<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency> <dependency>配置数据源对象作为Spr…

【牛客刷题】每日一练—ArrayList的实例强化

✨hello&#xff0c;进来的小伙伴们&#xff0c;你们好呐&#xff01;✨ &#x1f362;&#x1f362;系列专栏&#xff1a;【牛客刷题】 &#x1f32f;&#x1f32f;作者简介&#xff1a;一名大三在读的科班Java编程小白&#xff0c;星夜漫长&#xff0c;你我同行! &#x1f37…

383.赎金信

题目来源&#xff1a; 力扣https://leetcode.cn/problems/ransom-note/题目简介&#xff1a; 判断字符串a中的字母能不能构成字符串b&#xff0c;能的话就返回true&#xff0c;不能就返回false&#xff0c;字符串a里的字母每个都只能用一次&#xff0c;不能重复使用 思路&am…

Endpoint Central的IT资产管理(ITAM)

什么是 IT 资产管理 (ITAM) IT 资产管理 (ITAM) 是识别、发现、采购、管理、监控和处置企业网络中存在的所有公司拥有的数据、设备和软件元素的过程。ITAM 工具可确保集中查看网络中存在的所有资产以及软件和硬件详细信息。拥有完整的 ITAM 流程可以使您能够就收购新资产做出有…