一文教你在現(xiàn)有Vue項(xiàng)目中嵌入Blazor項(xiàng)目
準(zhǔn)備流程
Vue 項(xiàng)目創(chuàng)建流程
1.使用Vue創(chuàng)建一個(gè)Demo項(xiàng)目 全部選擇默認(rèn)No即可 然后項(xiàng)目名稱就用demo了
npm init vue@latest cd demo npm i
安裝完成依賴,在項(xiàng)目的根目錄找到index.html 添加以下代碼即可
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico" rel="external nofollow" >
<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/> <!--對(duì)應(yīng)razor組件的標(biāo)簽 -->
</main>
</template>然后將Vue項(xiàng)目構(gòu)建
npm run build
將生成的 dist目錄copy到創(chuàng)建的 Blazor的wwwroot中
Blazor項(xiàng)目創(chuàng)建流程
使用mkdir創(chuàng)建一個(gè)webassembly文件夾 ,cd進(jìn)入webassembly目錄,創(chuàng)建 一個(gè)空的blazor-webassembly的項(xiàng)目
mkdir webassembly cd webassembly dotnet new blazorwasm-empty
將Microsoft.AspNetCore.Components.CustomElements添加到項(xiàng)目文件中,Microsoft.AspNetCore.Components.CustomElements就是用于在Vue中使用Blazor的一個(gè)包, 需要注意的是這個(gè)包只有.Net 6Rc和.Net7正式版才能使用
<PackageReference="Microsoft.AspNetCore.Components.CustomElements" Version="7.0.2" />
然后打開Program.cs 修改相關(guān)代碼
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
// BlazorApp.Pages.Index可以修改成自己的渲染的razor組件
// my-blazor-counter就是上面提到的razor對(duì)應(yīng)的標(biāo)記 這樣就可以在react通過my-blazor-counter去渲染BlazorApp.Pages.Index組件的內(nèi)容了
builder.RootComponents.RegisterCustomElement<webassembly.Pages.Index>("my-blazor-counter");
builder.RootComponents.Add<HeadOutlet>("head::after");
await builder.Build().RunAsync();
打開webassembly.Pages.Index 修改相關(guān)代碼
<h1>@Title</h1>
<p role="status">點(diǎn)擊數(shù)量: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">點(diǎn)擊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`項(xiàng)目build生成的文件拷貝并且覆蓋到`Blazor`項(xiàng)目中的`wwwroot`中
運(yùn)行效果
我們進(jìn)入到Blazor項(xiàng)目中準(zhǔn)備執(zhí)行blazor項(xiàng)目
dotnet watch
然后查看效果,執(zhí)行效果如下:

運(yùn)行基本沒有什么問題,這樣Blazor就不太會(huì)太死板,我們就可以某些在于Blazor有優(yōu)勢(shì)的情況就可以去嵌入Blazor實(shí)現(xiàn),在Vue中的使用成本極低,只是引用js,然后通過加入對(duì)應(yīng)的標(biāo)簽就可以直接使用,當(dāng)然你如果想要倆個(gè)項(xiàng)目一塊調(diào)試的話,可能需要在本地搭建nginx 去將倆個(gè)項(xiàng)目一塊代理到一個(gè)端口,這種情況是比當(dāng)前的拷貝到wwwroot目錄的效果更好的,我現(xiàn)在正在使用這種嵌入的方式在 一個(gè)基于react的Ide(opensumi)中嵌入Blazor的組件,實(shí)現(xiàn)動(dòng)態(tài)編譯代碼并且實(shí)時(shí)的去渲染Blazor組件的效果,這樣會(huì)很有效提供開發(fā)Blazor的效率,也可以在公司現(xiàn)有項(xiàng)目中的Vue 或者react 和Angular的項(xiàng)目中嵌入Blazor,目前來說嵌入成本很低,而且官方的是支持Server和Webassembly倆種模式的??梢詤⒖紝?shí)際業(yè)務(wù)去使用不同模式的,說到這里基本講解完成了。
到此這篇關(guān)于一文教你在現(xiàn)有Vue項(xiàng)目中嵌入Blazor項(xiàng)目的文章就介紹到這了,更多相關(guān)Vue嵌入Blazor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Burpsuite模塊之Burpsuite Intruder模塊詳解
Burp Intruder主要有四個(gè)模塊組成,本文針對(duì)每一模塊給大家詳細(xì)介紹,對(duì)Burpsuite Intruder模塊相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09
使用Ollama服務(wù)監(jiān)聽0.0.0.0地址
本文介紹了如何配置Ollama以監(jiān)聽0.0.0.0地址,使其能夠接受來自任何網(wǎng)絡(luò)接口的連接,并驗(yàn)證配置是否生效,同時(shí),也提醒了在進(jìn)行此操作時(shí)應(yīng)注意的安全風(fēng)險(xiǎn)2025-02-02
VSCode遠(yuǎn)程XHR failed無法連接的問題及解決方案
VSCode進(jìn)行遠(yuǎn)程連接時(shí)會(huì)檢查服務(wù)端的Server運(yùn)行情況,如未運(yùn)行則需要下載安裝,在下載過程中可能需要訪問外網(wǎng),如果外網(wǎng)不通則連接過程失敗,解決方法是手動(dòng)下載離線安裝包,手動(dòng)解壓至指定的路徑即可,對(duì)VSCode遠(yuǎn)程無法連接問題感興趣的朋友一起看看吧2024-03-03
教你免費(fèi)做一個(gè)屬于自己穩(wěn)定有效的圖床-PicGo
由于現(xiàn)在很多寫作平臺(tái)都支持了Markdown語法,導(dǎo)致圖床用的人越來越多。這篇文章主要介紹了如何免費(fèi)做一個(gè)屬于自己穩(wěn)定有效的圖床-PicGo,需要的朋友可以參考下2020-01-01

