当前位置: 首页 > 知识库问答 >
问题:

node.js - Node.js与Electron结合如何实现动态资源加载及大数据量文件读取?

卫学真
2023-12-22

node在启动本地服务器之后,如何实现托管资源的动态添加?
项目采用的electron、vue、node、cesium,前端cesium需要对本地文件夹的3dtiles(模型),terrain(地形),dom(影像)数据进行访问。
这3中数据基本属于影像金字塔,对数据缩放到某一层级之后,cesium会对服务器进行重新请求并渲染,所以需要一直保留链接。
image.png

对于3dtiles,我是根据electron读取的文件夹路径传递给服务器和cesium,cesium根据路径进行请求,服务器根据路径进行读取,实现动态加载。
image.png
image.png

对于terrain,我不是很清楚读取方式,官方文档是直接赋予文件夹路径,所以我采用express.js的静态资源管理器,将文件夹路径返回给cesium,成功读取。
image.png
image.png

对于DOM,暂时还未做,但加载方式与terrain类似,都是需要直接请求文件夹路径。

整体项目是electron打包成应用程序,因为每种数据的大小都是10多个G,所以打算采取动态读取的方式,让用户选择路径,然后再读取。此时,就需要对express.js服务器托管的文件夹进行调整,比如增加托管的文件夹路径。
我想询问,对于3种数据的获取,是共用一个服务端口好,还是分别启用不同的端口好?

对于大数据量的文件读取,有没有较好的读取方式?因为写出来的程序经常卡住。

新手上路,希望大佬不吝赐教!

共有1个答案

穆景辉
2023-12-22

对于你的问题,我会尝试给出一些建议。

  1. 关于服务端口
* 如果你打算将三种数据都通过同一个服务端口提供,那么可以考虑使用不同的路由或路径来区分它们。这样,客户端可以根据请求的路径来判断应该获取哪种类型的数据。* 如果你觉得分别启用不同的端口更合适,那么可以为每种数据类型提供一个单独的服务器。这样,每种数据类型都可以独立地处理请求,而不会相互干扰。
  1. 关于大数据量文件的读取
* 当处理大数据量文件时,确保你的服务器和客户端都进行了适当的优化。例如,可以考虑使用流式处理或分块读取来减少内存使用。* 对于Node.js,你可以使用`stream`模块来处理大数据流。这允许你一次读取一部分数据,而不是一次性加载整个文件。* 考虑使用缓存机制。对于经常被请求的数据,将其缓存在本地或远程服务器上,以减少读取时间。
  1. 关于动态资源加载和路径调整
* 如果你打算让用户选择路径,然后再读取,那么你可能需要实现一个文件选择对话框或类似的功能。这可以使用Electron的`dialog`模块来实现。* 对于动态添加托管的文件夹路径,你可以在服务器端进行相应的配置更改。例如,如果你使用Express.js,你可以动态地添加新的路由或中间件来处理新的文件夹路径。
  1. 其他建议
* 确保你的服务器和客户端都进行了适当的错误处理和日志记录,以便在出现问题时可以快速诊断和解决。* 如果可能的话,考虑对数据进行压缩传输,以减少网络带宽的使用。

希望这些建议能对你有所帮助!如果你还有其他问题或需要进一步的澄清,请随时提问。

 类似资料:
  • 问题内容: 关于如何在Node.js中实现文件自动重装的任何想法?每次更改文件时,我都无法重新启动服务器。显然,Node.js的功能不会重新加载文件(如果已经需要),因此我需要执行以下操作: 在 app.js 文件中,我有: 但这也不起作用-我在声明“ require”未定义的语句中遇到错误。正在逃避 app.js ,但不知道node.js全局变量。 问题答案: 一个很好的,最新的替代方法是 :

  • 问题内容: 我正在使用express在Node.js中做一个项目。这是我的目录结构: 该目录包含许多与API相关的JS文件。我需要做的是建立一个挂钩系统,每当从快速HTTP服务器请求一个API函数时,它就会执行相应的API处理程序中指定的任何操作。这可能令人困惑,但希望您能理解。 Larry通过POST发送请求以获取用户详细信息。 服务器查找以查找与该请求关联的功能。 服务器执行操作并将数据发送回

  • 本文向大家介绍Ajax实现动态加载数据,包括了Ajax实现动态加载数据的使用技巧和注意事项,需要的朋友参考一下 前言: 1.这个随笔实现了一个Ajax动态加载的例子。 2.使用.net 的MVC框架实现。 3.这个例子重点在前后台交互,其它略写。 开始: 1.控制器ActionResult代码(用于显示页面) 2.前台页面主要代码 说明:这个就是要展示数据的表格,里面的字段要和你建好的模型匹配。

  • 本文向大家介绍c++实现加载so动态库中的资源,包括了c++实现加载so动态库中的资源的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上就是小编为大家带来的c++实现加载so动态库中的资源全部内容了,希望大家多多支持呐喊教程~

  • 问题内容: 我尝试使用具有96GB RAM的服务器上的 fs.readFileSync 将大文件( 〜6Gb )加载到内存中。 问题是它失败并显示以下错误消息 RangeError:尝试分配大于最大大小的缓冲区:0x3fffffff字节 不幸的是,我没有发现增加Buffer的可能性,这似乎是一个常数。 如何克服此问题并使用Node.js加载大文件? 谢谢! 问题答案: 来自一个快乐的常见问题解答:

  • 本文向大家介绍Node.js Sequelize如何实现数据库的读写分离,包括了Node.js Sequelize如何实现数据库的读写分离的使用技巧和注意事项,需要的朋友参考一下 一、前言 在构建高并发的Web应用时,除了应用层要采取负载均衡方案外,数据库也要支持高可用和高并发性。使用较多的数据库优化方案是:通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Pr