百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

如何在现有的Vue项目中嵌入 Blazor项目?

liuian 2025-06-18 22:20 3 浏览

目前官方只提供了angular和react俩种示例,所以本教程将来讲解如何在Vue的现有项目中使用,上期已经做好了react的教材!

准备流程

Vue 项目创建流程

  1. 使用Vue创建一个Demo项目 全部选择默认No即可 然后项目名称就用demo

    npm init vue@latest

    cd demo
    npm i

    安装完成依赖,在项目的根目录找到index.html 添加以下代码即可

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    </head>
    <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
    <script src="_content/Microsoft.AspNetCore.Components.CustomElements/BlazorCustomElements.js"></script>
    <script src="_framework/blazor.webassembly.js"></script>
    </body>
    </html>

    src\App.vue中添加以下代码

    <script setup lang="ts">
    </script>

    <template>
    <main>
    <my-blazor-counter/> <!--对应razor组件的标签 -->
    </main>
    </template>

    然后将Vue项目构建

    npm run build

    将生成的 dist目录copy到创建的 Blazorwwwroot

Blazor项目创建流程

使用mkdir创建一个webassembly文件夹 ,cd进入webassembly目录,创建 一个空的blazor-webassembly的项目

mkdir webassembly 
cd webassembly
dotnet new blazorwasm-empty

Microsoft.AspNetCore.Components.CustomElements添加到项目文件中,Microsoft.AspNetCore.Components.CustomElements就是用于在Vue中使用Blazor的一个包, 需要注意的是这个包只有.Net 6Rc和.Net7正式版才能使用

<PackageReference="Microsoft.AspNetCore.Components.CustomElements" Version="7.0.2" />

然后打开Program.cs 修改相关代码

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
// BlazorApp.Pages.Index可以修改成自己的渲染的razor组件
// my-blazor-counter就是上面提到的razor对应的标记 这样就可以在react通过my-blazor-counter去渲染BlazorApp.Pages.Index组件的内容了
builder.RootComponents.RegisterCustomElement<webassembly.Pages.Index>("my-blazor-counter");
builder.RootComponents.Add<HeadOutlet>("head::after");

await builder.Build().RunAsync();

打开webassembly.Pages.Index 修改相关代码

<h1>@Title</h1>

<p role="status">点击数量: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">点击Blazor组件效果</button>

@code {
private int currentCount = 0;
[Parameter]
public string Title { get; set; } = "Vue 嵌入 Blazor";
[Parameter]
public int? IncrementAmount { get; set; }

private void IncrementCount()
{
currentCount++;
}
}
<style>
button {
font-weight: bold;
background-color: #7b31b8;
color: white;
border-radius: 4px;
padding: 4px 12px;
border: none;
}

button:hover {
background-color: #9654cc;
cursor: pointer;
}

button:active {
background-color: #b174e4;
}

</style>
- 需要注意将`Vue`项目build生成的文件拷贝并且覆盖到`Blazor`项目中的`wwwroot`

运行效果

我们进入到Blazor项目中准备执行blazor项目

dotnet watch

然后查看效果,执行效果如下:

运行基本没有什么问题,这样Blazor就不太会太死板,我们就可以某些在于Blazor有优势的情况就可以去嵌入Blazor实现,在Vue中的使用成本极低,只是引用js,然后通过加入对应的标签就可以直接使用,当然你如果想要俩个项目一块调试的话,可能需要在本地搭建nginx去将俩个项目一块代理到一个端口,这种情况是比当前的拷贝到wwwroot目录的效果更好的,我现在正在使用这种嵌入的方式在 一个基于react的Ide(opensumi)中嵌入Blazor的组件,实现动态编译代码并且实时的去渲染Blazor组件的效果,这样会很有效提供开发Blazor的效率,也可以在公司现有项目中的Vue或者reactAngular的项目中嵌入Blazor,目前来说嵌入成本很低,而且官方的是支持ServerWebassembly俩种模式的。可以参考实际业务去使用不同模式的,说到这里基本讲解完成了,谢谢大佬的阅读

相关推荐

vue是什么东西(vue是干什么的)

首先看看官方网站是怎么解释的,如下:Vue(读作/vju/,类似于view)是一个用于构建用户界面的渐进式框架。与其他单体框架不同,Vue从一开始就被设计为可逐步采用的。核心库仅专注于视图层,易于...

超赞 vue2/3 可视化打印设计VuePluginPrint

今天来给大家推荐一款非常不错的Vue可拖拽打印设计器Hiprint。引入使用//main.js中引入安装import{hiPrintPlugin}from'vue-plugin-...

使用VuePress2.X构建个人知识博客,域名部署到GitHub Pages中

使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHubPages中什么是VuePressVuePress是一个以Markdown为中心的静态网站生成器。你可以使用Mar...

尤雨溪新品Vite的魔力,详解(尤雨溪新品vite的魔力,详解解析)

上篇《尤雨溪是个恶魔,Vite三天10更》谈到了Webpack这一系列打包工具出现的原因。这些工具的出现是为了解决ESModules模块系统本身的环境兼容问题、以及零散的模块文件导致的...

什么是VUE?vue有什么作用?(vue的主要用途)

什么是vue?Vue.js是一套构建用户界面的渐进式框架,Vue采用自下向上增量开发的设计,其核心库只关注视图层,易于上手,同时vue完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复...

10个Vue开发技巧「实践」(vue开发需要掌握哪些知识)

作者:WahFung转发链接:https://juejin.im/post/5e8a9b1ae51d45470720bdfa路由参数解耦一般在组件内使用路由参数,大多数人会这样做:exportdef...

刚搭好vuecli结果官网建议升级vite,于是就升级下

从vue-cli迁移到Vite进行迁移的主要原因是速度。Vite的开发服务器速度很快。因为它使用原生浏览器支持JavaScript模块,所以服务器启动时间是即时的。该方法还意味着无论应用程...

无所不能,将 Vue 渲染到嵌入式液晶屏

该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言之前看了雪碧大佬的将React渲染到嵌入式液晶屏觉得很有意思,R...

【开源】基于 Vue 和 Gin 开发的前后端分离的开源框架

项目介绍Gin-vue-admin是一个基于vue和gin开发的全栈前后端分离的开发基础平台,旨在快速搭建中小型项目。拥有jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器等功能...

Firefox正针对Vue.js进行优化,下版本响应速度将“显著提升”

IT之家9月7日消息,据Mozilla官方博客发文显示,Firefox浏览器正针对Vue.js进行优化,此前FireFox浏览器在面向Vue3时遇到了一些性能问题。▲图源...

vue:生命周期钩子函数及顺序(vue3.0生命周期函数)

一、vue的钩子相关顺序Vue实例有一个完整的生命周期,在newVue()后,会初始化数据,如下://初始化的入口,各种初始化工作initMixin(Vue);//数据绑定的核心方法,包括常用...

使用 Pinia ORM 管理 Vue 中的状态

转载说明:原创不易,未经授权,谢绝任何形式的转载状态管理是构建任何Web应用程序的重要组成部分。虽然Vue提供了管理简单状态的技术,但随着应用程序复杂性的增加,处理状态可能变得更具挑战性。这就是为什么...

搭建Trae+Vue3的AI开发环境(vue ide 开发工具)

从2024年2025年,不断的有各种AI工具会在自媒体中火起来,号称各种效率王炸,而在AI是否会替代打工人的话题中,程序员又首当其冲。作为一个后端开发,这篇文章基于Trae工具,来创建和运行一个简单的...

如何在Vue3中使用Nuxt进行服务端渲染开发?

服务端渲染SSR(Server-SideRendering)是一种在服务器端生成网页内容的技术,这种实现方式与传统的客户端渲染CSR(Client-SideRendering)有所不同。在SSR中...

一篇文章说清 webpack、vite、vue-cli、create-vue 的区别

webpack、vite、vue-cli、create-vue这些都是什么?看着有点晕,不要怕,我们一起来分辨一下。先看这个表格:脚手架vue-clicreate-vue构建项目vite打包代码we...