Rust如何编制前端路由

server/2024/11/29 20:18:25/

目的:根据前端build文件夹下的目录结构,生成路由,将前端html文件返回。

rust">/// 设置 HTML 文件路由
pub fn route(cfg: &mut web::ServiceConfig) {if Path::new("client/build/index.html").exists() {let index_content = match fs::read_to_string("client/build/index.html") {Ok(content) => content,Err(e) => {log::error!("无法读取 index.html: {}", e);return;}};let index_content = web::Data::new(index_content);cfg.service(web::resource("/user/authorize/").app_data(index_content.clone()).route(web::get().to(serve_index)),);cfg.service(web::resource("/condition-monitoring/parameter-display/parameter-list-display/create-list",).app_data(index_content.clone()).route(web::get().to(serve_index)),);for entry in WalkDir::new("client/build") {if let Ok(entry) = entry {if entry.path().extension().map_or(false, |ext| ext == "html") {if let Ok(rel_path) = entry.path().strip_prefix("client/build") {let route_path = rel_path.with_extension("").to_string_lossy().replace("\\", "/");let route_path = if route_path.ends_with("index") {route_path.trim_end_matches("index").to_string()} else {route_path.to_string()};cfg.service(web::resource(format!("/{}", route_path)).app_data(index_content.clone()).route(web::get().to(serve_index)),);}}}}} else {log::error!("index.html 未找到");}
}

在使用 svelte开发的时候遇到以下问题:

1、+layout.ts 设置 trailingSlash = 'always' 之后,无法索引到正确路径;
解决方案:trailingSlash = 'never'
2、要用客户端接管所有的路由处理

# svelte.config.jsadapter: adapter({fallback: 'index.html',}),

http://www.ppmy.cn/server/145987.html

相关文章

阅读《基于蒙特卡洛法的破片打击无人机易损性分析》_笔记

目录 基本信息 1 引言 1.1 主要研究内容 1.2 研究必要性(为什么要研究) 1.3 该领域研究现状(别人做了什么/怎么做的) 2 主要研究过程(我们做了什么) 2.1 建立目标仿真模型 2.2 确定毁伤依据 2.3 无…

Android.mk里如何指定编译模块的输出路径

在 Android.mk 文件中,LOCAL_MODULE_PATH_32、LOCAL_MODULE_PATH_64 和 LOCAL_MODULE_RELATIVE_PATH 可以一起使用,以灵活地控制不同架构模块的安装路径。下面是一个详细的示例,展示如何结合使用这些变量。 示例项目结构 假设你的项目结构如…

怎么样才算得上熟悉高并发编程?

提到并发编程很多人就会头疼了;首先就是一些基础概念:并发,并行,同步,异步,临界区,阻塞,非阻塞还有各种锁全都砸你脸上,随之而来的就是要保证程序运行时关键数据在多线程…

Taro React小程序开发框架 总结

目录 一、安装 二、目录结构 三、创建一个自定义页面 四、路由 1、API 2、传参 3、获取路由参数 4、设置TabBar 五、组件 六、API Taro非常好用的小程序框架,React开发者无缝衔接上。 一、安装 官方文档:Taro 文档 注意,项目创建…

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道,电子商务巨头亚马逊(AMZN)已开发出一种新的生成式人工智能(AI),不仅能处理文本,还能处理图片和视频,从而减少对人工智能初创公司Anthropic的依赖…

PostgreSQL在Linux环境下的常用命令总结

标题 登录PgSQL库表基本操作命令新建库表修改库表修改数据库名称:修改表名称修改表字段信息 删除库表pgsql删除正在使用的数据库 须知: 以下所有命令我都在Linux环境中执行验证过,大家放心食用,其中的实际名称换成自己的实际名称即…

js判断空对象

1. 使用 Object.keys() 方法 Object.keys(obj) 方法返回一个包含对象可枚举属性名称的数组。如果返回的数组长度为 0,表示对象为空。 const isEmpty (obj) > Object.keys(obj).length 0;// 示例 const emptyObject {}; const nonEmptyObject { key: value …

三格电子—EtherNet IP转Modbus RTU网关

EtherNet/IP转Modbus RTU网关 SG-EIP-MOD-210 产品用途 SG-EIP-MOD-210网关可以实现将Modbus接口设备连接到 EtherNet/IP网络中。用户不需要了解具体的Modbus和 EtherNet/IP协议即可实现将Modbus设备挂载到 EtherNet/IP接口的PLC上,并和Modbus设备进行数据交互。拓…