在asp.net core中使用vue3+vite(起)

这篇具有很好参考价值的文章主要介绍了在asp.net core中使用vue3+vite(起)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

一开始是一个自用的应用,原本是用razor写的。最近有了点新想法,加点新功能,但是我接触的项目基本都是vue+api的前后端分离,用这razor写的是真不习惯,最后决定还是用习惯的vue重写。

之前尝试过在.net core里使用vue2+webpack,毕竟实际上就是把.vue翻译成了.js来用,一个站点就能跑。但是vite不同于webpack的实在想不到怎么弄到.net core里来。

另外我的前端不太行,对于vue基本上只会写,不会搭。有些东西搞错了敬请谅解。

环境

  • .net 6
  • pnpm 8.6.1
  • Visual Studio 2022 17.4

步骤

  1. 创建新项目,使用React的模板:
    在asp.net core中使用vue3+vite(起)

  2. ClientApp文件夹下,就是React相关的内容,删掉这个文件夹,然后在项目目录下执行
    pnpm create vite 参考官网,Project Name就用ClientApp(可以改,但是没必要,不然相应的.net core的部分也要改)然后后面选择vue + typescript,直接一手鸠占鹊巢

  3. 打开项目文件.csproj,可以看到内容比普通的项目文件多很多。

    • <SpaRoot>[SpaRoot]</SpaRoot>,可以看到这里就是ClientApp,如果上面创建project name不是ClientApp,这里就要相应的修改了

    • <SpaProxyServerUrl>[SpaProxyServerUrl]</SpaProxyServerUrl>,这里面的[SpaProxyServerUrl]就是vue运行用的url,把port改成vite默认的5173,即可。当vite.config.ts中配置了其他端口时,这里要与之一致。

    • <SpaProxyLaunchCommand>[SpaProxyLaunchCommand]</SpaProxyLaunchCommand>,运行用的命令,这里npm start是原react模板生成的package.json里的;现在换成pnpm run dev即可

    • <DistFiles Include="$(SpaRoot)build\**" /> 改成<DistFiles Include="$(SpaRoot)dist\**" />

3.5 若项目目录下没有wwwroot文件夹,手动创建。

4.调试运行:会先后启动2个站点,一个是.net core,一个是vue。

5.发布:正常生成发布文件即可。

扩展

首先,调试运行会出现一个cmd,执行了pnpm run dev([SpaProxyLaunchCommand]),而Program.cs 里的

app.UseStaticFiles();
// ....
app.MapFallbackToFile("index.html");

这两句代码,前者对应的wwwroot文件夹是空的,后者需要的index.html更是不存在(wwwroot),那么我对这两句代码进行一个释的注,调试运行果然依然正常。

然后是这个 Microsoft.AspNetCore.SpaProxy 。从Program.cs没有这个库的一丝踪迹,应该是写在什么了看不见的地方。
在 ASP.NET Core 中使用承载启动程序集

通过 IHostingStartup(承载启动)实现,在启动时从外部程序集向应用添加增强功能。 例如,外部库可使用承载启动实现为应用提供其他配置提供程序或服务。。

而通过调试运行的时候,可以看到是net core的站点会先显示Launching the SPA proxy...,然后跳转到vue站点。但是发布运行,却是直接显示vue的首页。我直接对发布包里的Microsoft.AspNetCore.SpaProxy.dll进行一个除的删,果然站点仍然能够正常运行。

小结

  • 在调试运行时,通过Microsoft.AspNetCore.SpaProxy支持站点运行。(确切的来说是Microsoft.AspNetCore.SpaProxy后台又会去调用SpaProxyLaunchCommand来启动了一个dev server,并重定向他)

  • 生成发布包后,通过app.UseStaticFiles();就可以支持站点运行(访问/index.html即可)。

反过来说,如果你在dev模式下,手动执行来启动站点,是可以无视Microsoft.AspNetCore.SpaProxy的。而生成发布文件之后,只需要app.UseStaticFiles();即可,更是与这个项目模板无关。所以就算是不使用这个项目模板,也能达到前端页面和后端API在同一个站点的效果(发布时)。

扩展里总结了一些内容,发现这里基本上都有😂 ASP.NET Core 中的单页应用程序 (SPA) 概述

转(可跳过)

发现了官方的模板,康康有什么不一样的。

安装了 ASP.NET 和 Web 开发工作负载的 Visual Studio 2022 版本 17.5 或更高版本

这也是开头我为什么标注的我的VS版本,因为没有这个模板,绕了一小圈,不会有现成的吧...

探索

在asp.net core中使用vue3+vite(起)
更新之后果然有了,前2个是之前就有的,相当于普通的vue项目,开始创建

  1. 这里是解决方案名称,以往都是项目名称,看来结构上就不大一样了
    在asp.net core中使用vue3+vite(起)

  2. 提示vue不是内部或外部命令....,需要全局安装,注意这里用的是vue3,所以安装了以前vue2的 vue-cli 在后面创建的时候会失败

  3. 这里的创建挺耗时的,最后生成的还是2个项目
    在asp.net core中使用vue3+vite(起)

  4. 运行:启动站点,但是并没有自行运行vue,所以vue的部分需要手动去执行命令。

  5. 发布:需要分别生成发布文件。

小结

???好像这个vueapp和之前的独立vue项目没啥大区别,2个项目各论各的,基本没有什么关联。不比SPA的,至少生成、运行、发布的时候顺带一起做了。而且官方这个用的@vue/cli,也不符我们这篇题意。

不过这个模板也只是预览版文章来源地址https://www.toymoban.com/news/detail-521791.html

到了这里,关于在asp.net core中使用vue3+vite(起)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ASP.NET Core使用Hangfire定时发布文章

    也是上了5天班,终于迎来了休息,抽空更新下博客,然后就是下周一公司会对我进行考核,希望考核能通过吧!!! 然后我想给博客添加一个定时发布文章的功能,其实这个功能对于我的博客是没什么作用的,什么时候发都没什么人看。但是咱还是要有这个功能。 我为文章

    2024年02月08日
    浏览(44)
  • ASP.NET Core MVC 使用 JWT 的示例

    创建一个 ASP.NET Core MVC 项目。 添加 NuGet 包: Microsoft.AspNetCore.Authentication.JwtBearer:用于支持 JWT 的身份验证。 System.IdentityModel.Tokens.Jwt:用于生成和验证 JWT。 在 Startup.cs 文件中做如下修改: 请注意,在上述代码中,您需要将以下参数替换为实际的值: \\\"your_issuer\\\" :发行者的标

    2024年02月13日
    浏览(45)
  • ASP.NET Core Web API入门之三:使用EF Core

    一般来讲我们做项目都会用实体类跟数据库实体进行关系对应,这样的好处方便我们维护、增删改查,并且可以减少SQL的编写,从而统一风格,那么 Entity Framework Core 就是很不错的ORM框架。 1、跨数据库支持能力强大,只需修改配置就可以轻松实现数据库切换。 2、提升了开发效

    2024年02月10日
    浏览(55)
  • 【ASP.NET Core】使用SignalR推送服务器日志

    一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API。由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动。经过我近一个月的改造,除了保留业务逻辑代码,其他的基本重写。如今上位机的启动

    2024年02月03日
    浏览(60)
  • 使用任务计划开机启动ASP.NET Core应用程序

    ASP.NET Core应用程序现在是一个控制台应用程序,在Windows上直接双击启动,但如果想让开发完成的ASP.NET Core应用程序开机启动,可以将ASP.NET Core应用程序修改成Windows服务运行,但这需要额外添加代码,也可以使用IIS来托管ASP.NET Core应用程序,但可能需要安装一些支持IIS的组件

    2024年02月08日
    浏览(61)
  • ASP.NET Core 中使用 WebSocket 协议进行实时通信

    介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core项目 首先,使用 Visual Studio 或

    2024年01月25日
    浏览(51)
  • .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍

    在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https 启用Docker 使用控制器 启用OpenAPI支持 不使用顶级语句 其中配置Https 是WebApi是否使用https协议,启

    2024年02月07日
    浏览(47)
  • 在ASP.NET Core中轻松使用JwtBeare进行身份验证

    JwtBearer简介 首先要搞清楚什么是JwtBearer,JwtBearer是ASP.NET Core的OAuth 2.0 JWT Bearer身份验证提供程序。它提供了对JWT令牌进行验证的功能,然后允许将令牌中包含的声明(claims)用于用户身份验证和授权控制。 Json Web Token (JWT)是一种Web标准,用于在不同系统间传输数据。JWT是一种

    2024年02月04日
    浏览(50)
  • ASP.NET Core使用JWT+标识框架(identity)实现登录验证

    最近阅读了《ASP.NET Core 技术内幕与项目实战——基于DDD与前后端分离》(作者杨中科)的第八章,对于Core入门的我来说体会颇深,整理相关笔记。 JWT:全称“JSON web toke”,目前流行的跨域身份验证解决方案; 标识框架(identity):由ASP.NET Core提供的框架,它采用RBAC(role

    2024年02月11日
    浏览(45)
  • ASP.NET Core 3.1系列(13)——本地缓存MemoryCache的使用

    在实际开发过程中,缓存( Cache )是一项重要技术。有时候为了缓解数据库访问的压力,我们可以将一些需要经常读取但又几乎不会变化的数据存在缓存里,以此加快数据的访问速度。在 ASP.NET Core 中,缓存一般分为本地缓存和分布式缓存。相较于分布式缓存( Redis ),本地

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包