V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
289396212
V2EX  ›  程序员

做一个小项目即想用 asp.net core 的 MVC,前后端不分离,又想用 react 怎么办

  •  
  •   289396212 · 2023-08-07 16:23:09 +08:00 · 1484 次点击
    这是一个创建于 503 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有好的最佳实践吗,把 react 引入 MVC
    7 条回复    2023-08-08 20:36:21 +08:00
    Oktfolio
        1
    Oktfolio  
       2023-08-07 16:32:10 +08:00
    新建一个 index.html (模板引擎文件),将编译后的前端放在资源( CDN 、静态文件服务器)里面,然后在 index.html 中引入编译后的 js, css 等文件,Controller 接口跳转渲染 index.html 。

    这种操作大概是可行的,在 .NET 中具体怎么操作就不知道了。

    不能使用 history 路由
    libasten
        2
    libasten  
       2023-08-07 16:56:06 +08:00
    为啥不用 .NET Core WebAPI 呢?这个不就说为 react 和 vue 之类的前端框架设计了吗?
    wu00
        3
    wu00  
       2023-08-07 17:32:39 +08:00
    gowk
        4
    gowk  
       2023-08-07 20:09:31 +08:00
    参考一下这个项目 https://github.com/hez2010/H-Judge
    KKKKKKKKKKKKKKKK
        5
    KKKKKKKKKKKKKKKK  
       2023-08-08 14:11:58 +08:00
    我司目前管理后台就是这样的。netcore 下有个包可以使用:Microsoft.AspNetCore.SpaServices.Extensions 。
    SuperBig
        6
    SuperBig  
       2023-08-08 17:26:35 +08:00   ❤️ 1
    我知道的有两种方式,第一种就是直接用 Microsoft.AspNetCore.SpaServices.Extensions ,上面 5L 和 3L 两位都说过了。

    第二种方式:手动集成,我是因为历史遗留问题,无法直接用第一种方式所提及的类库,所以只能自己手动集成。

    1 、前端项目 build 后的产物丢到 api 项目的 wwwroot 里。
    2 、api 项目增加 UseStaticFiles 中间件,用以拦截静态资源。
    3 、api 项目的控制器都增加个统一的前缀,如/user/detail -> /api/user/detail ,这个怎么加起来简单你自己摸索,方式有很多。
    4 、api 项目增加 MapFallbackToFile ,将所有 webapi 没有 match 的请求都转到第一步的产物入口文件,一般是 index.html 。

    第四部的代码片段:
    app.UseEndpoints(endpoints=>{
    //....

    endpoints.MapFallbackToFile("index.html");
    });
    289396212
        7
    289396212  
    OP
       2023-08-08 20:36:21 +08:00
    @SuperBig 很有帮助,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:38 · PVG 05:38 · LAX 13:38 · JFK 16:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.