首页 > 其他分享 >将打包后的 React或Vue 与 WebApi 部署在同一站点

将打包后的 React或Vue 与 WebApi 部署在同一站点

时间:2024-11-19 11:31:07浏览次数:1  
标签:WebApi index Vue 文件 静态 app React defaultFilesOptions html

前后端分离的开发中,在部署项目时通常会分开进行部署,而这样又很麻烦,需要配置跨域,域名配置等等
有一些情景下,我们需要采用更为方便的方式去部署,可以参考下方方法进行调整

准备

  • Web Api项目
  • 一个打包好的前端项目 React或VUE都可以

调整

为WebApi项目新增 wwwroot 文件夹,用于放置前端静态文件
在 Program.cs 中增加如下改动


// 默认文件
app.UseDefaultFiles(); // Default.html、Default.htm、index.html、index.htm

// 静态文件
app.UseStaticFiles(); // 可访问 wwwroot 下的静态文件

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

// 映射回退路由以为客户端路由提供 index.html
app.MapFallbackToFile("index.html");

以上是最简单的配置方式,HashRouter或BrowserRouter都可以用,不需要再单独为前端配置Nginx重定向,也可以使用下面的方式,过滤指定前缀的不重定向到静态文件

<Route path="/:nthParam*" component={DefaultLayout} /> // 如果前端路由有此配置或类似此方式的,推荐使用下方方法

// 一定要在认证之前添加,否则会认证失败
app.UseRouting();

// 静态文件
app.UseStaticFiles();

// 默认文件
app.UseDefaultFiles();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

if (!app.Environment.IsDevelopment())
{
    DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
    defaultFilesOptions.DefaultFileNames.Clear();
    // 设置首页,默认为 index.html
    defaultFilesOptions.DefaultFileNames.Add("index.html");
    app.UseDefaultFiles(defaultFilesOptions);
}

// 使用 MapWhen 方法来排除 /api 路径的请求
app.MapWhen(context => !context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
    appBuilder.UseEndpoints(endpoints =>
    {
        // 映射回退路由以为客户端路由提供 index.html
        endpoints.MapFallbackToFile("index.html");
    });
});

app.MapControllers();

标签:WebApi,index,Vue,文件,静态,app,React,defaultFilesOptions,html
From: https://www.cnblogs.com/Chowhound/p/18554131

相关文章

  • 【Vue 表单类组件封装与 v-model 简化代码】
    文章目录什么是Vue表单类组件?封装Vue表单类组件步骤1:创建一个表单组件步骤2:使用`v-model`简化数据绑定步骤3:将表单组件封装步骤4:在父组件中使用表单组件什么是Vue表单类组件?Vue表单类组件是一种将表单元素(如输入框、复选框、单选框等)封装成可复用的组件的......
  • 【vue】项目迭代部署后 自动清除浏览器缓存
    前言:vue项目打包部署上线后,因浏览器缓存问题,导致用户访问的依旧是上个迭代批次的旧资源,需要用户手动清除缓存才能更新至最新版本,影响用户体验。解决方法:html根文件添加以下标签<metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"con......
  • Taro首个支持鸿蒙的 UI 库,同时还兼容 React Native、小程序、H5
    Taro4.0已经推出一段时间了,4.0版本主要是支持了鸿蒙端的开发以及Vite编译工具的支持。duxapp在这段时间也跟随Taro的脚步,实现的对鸿蒙端的支持,并且也将之前的duxui这个多端的UI库,对鸿蒙端实现了兼容。duxui组件库提供了60+的组件支持,能快速帮助你完成业务。现在......
  • 【开题报告】基于Springboot+vue乡村信息化管理系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,信息化已成为推动社会进步和经济发展的重要力量。在乡村地区,传统的管理方式逐渐暴露出效率低下、信息不透明等问题,严重制约了......
  • Vue+ElementUI 导出为PDF文件
    在ElementUI中导出PDF通常涉及将页面上的DOM元素转换为PDF格式的文件。这一过程可以通过结合使用 html2canvas 和 jsPDF 这两个JavaScript库来实现。步骤:1、安装依赖在项目中安装html2canvas和jsPDF这两个库。可以通过npm进行安装:npminstallhtml2canvasjspdf2、创建......
  • vue2-组件化编程
    模块:向外提供特定功能的js呈现组件:用来实现局部(特定)功能效果的代码集合模块化:当应用中的js都以模块来编写的,那这个应用就是一个模块化的应用组件化:当应用中的功能都是多组件的方式来编写的,那这个应用就是一个组件化的应用编写组件-非单文件组件非单文件组......
  • electron + vite + vue3问题
    electron+vite+vue3 参考网址:https://evite.netlify.app/  安装步骤npxdegitalex8088/electron-vite-boilerplateelectron-app    cdelectron-app    npminstall    npmrundev electron-app项目,目录结构说明    build==》......
  • 前端VUE上传文件+后端.NET WebApi
    前端:VUE <template><divv-loading="loading"element-loading-text="Loading..."><el-headerclass="order"><el-rowclass="topfrom":gutter="20">......
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】绘制空心圆圈
    Androidjava绘制圆圈自定义CircleViewpackagecom.java.circle;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.view.View;publicclassCircleViewextendsView{privatePaintpaint;......
  • vue+mockjs数据
    参考链接:https://blog.csdn.net/qi8023for/article/details/127618742=========第一种方法MSW:使用VueCLI的mock-server1、安装MSWnpminstallmsw2、工程下创建一个mocks文件夹和handlers.js和browser.js文件handlers.js定义MOCKAPI行为:import{rest}from'msw'ex......