最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在JavaScript中運(yùn)行.NET?Core代碼詳情

 更新時間:2022年04月26日 08:30:42   作者:My?IO  
這篇文章主要介紹了在JavaScript中運(yùn)行.NET?Core代碼詳情,DotNetJS可以將C#項(xiàng)目編譯為與任何環(huán)境兼容的單文件JavaScript庫,變可以在JavaScript中運(yùn)行.NET?Core代碼,相關(guān)操作分享詳情,需要的小伙伴可以參考一下

一、前言

在.NET Core中運(yùn)行JavaScript代碼,目前已經(jīng)有很多實(shí)現(xiàn)方案。

但是,如果你希望在純JavaScript環(huán)境中運(yùn)行.NET Core代碼呢?

那么,DotNetJS可能對你有所幫助。

二、DotNetJS

DotNetJS可以將C#項(xiàng)目編譯為與任何環(huán)境兼容的單文件JavaScript庫,無論是Web瀏覽器,Node.js還是自定義限制空間,如VS Code的Web擴(kuò)展,都可以正常使用它。

該解決方案基于兩個主要組件:

  • JavaScript/dotnet-runtime(npm)使用已編譯的C#程序集和.NET運(yùn)行時WebAssembly模塊,以在JavaScript中提供C# 操作性層。該庫與環(huán)境無關(guān) - 它不依賴于特定于平臺的API,如瀏覽器DOM或節(jié)點(diǎn)模塊,并且可以作為CommonJS或ECMAScript模塊導(dǎo)入,也可以通過瀏覽器中的腳本標(biāo)記使用。
  • DotNet/dotNetJS(NuGet)在C#中提供JavaScript互操作性層,并通過MSBuild任務(wù)將項(xiàng)目輸出打包到單文件JavaScript庫中。生成的庫包含使用項(xiàng)目程序集初始化的dotnet運(yùn)行時,并準(zhǔn)備用作打包的C#項(xiàng)目的互操作性層。

三、Demo

1. 創(chuàng)建項(xiàng)目

使用VS2022創(chuàng)建一個控制臺項(xiàng)目,修改項(xiàng)目文件,文件內(nèi)容如下:

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EmitSourceMap>true</EmitSourceMap>
<EmitTypes>true</EmitTypes>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetJS" Version="0.4.0" />
</ItemGroup>
</Project>
  • 指定SDK為Microsoft.NET.Sdk.BlazorWebAssembly
  • 引用DotNetJS Nuget

2. 實(shí)現(xiàn)C#代碼

實(shí)現(xiàn)Program.cs,代碼如下:

using DotNetJS;
using Microsoft.JSInterop;
using System;
using System.Threading.Tasks;
namespace HelloDotnetJS;
public partial class Program
{
public static void Main()
{
Console.WriteLine($"HelloDotnetJS 初始化!");
}
[JSFunction]
public static partial string GetBaseAddress();
[JSInvokable]
public async static Task<WeatherForecast[]> Demo()
{
var uri = new Uri(GetBaseAddress());
Console.WriteLine(uri);
var json = await new System.Net.Http.HttpClient { BaseAddress = uri }
.GetStringAsync("weather.json");
var forecasts = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherForecast[]>(json);
return forecasts;
}
}

Demo方法的具體邏輯如下:

  • 獲取網(wǎng)站根路徑,使用[JSFunction]指定具體值來源于JS傳入;
  • 訪問網(wǎng)站根路徑下的weather.json文件
  • 反序列化json,調(diào)用Newtonsoft驗(yàn)證第三方庫能否正常使用;
  • 返回WeatherForecast集合

在終端窗口執(zhí)行??dotnet publish???,上述代碼將會編譯成JS代碼文件??dotnet.js??。

3. 實(shí)現(xiàn)JS代碼

創(chuàng)建demo.html,代碼如下:

<meta charset="UTF-8">
<script src="dotnet.js"></script>
<script>
//定義GetBaseAddress實(shí)現(xiàn)
dotnet.HelloDotnetJS.GetBaseAddress = () => window.location.protocol + "http://" + window.location.host;
window.onload = async function () {
//初始化
await dotnet.boot();
console.log("開始執(zhí)行Demo");
const str = await dotnet.HelloDotnetJS.Demo();
console.log(str);
};
</script>

4. 運(yùn)行效果

將所有文件部署到網(wǎng)站上,例如http://localhost:5678/: 

如何在JavaScript中運(yùn)行.NET Core代碼_.net_02

weather.json的文件內(nèi)容如下:

[
{
"date": "2018-05-06",
"temperatureC": 1,
"summary": "My IO"
},
{
"date": "2018-05-07",
"temperatureC": 14,
"summary": "Bracing"
}
]

用瀏覽器訪問??http://localhost:5678/demo.html??,在控制臺窗口可以看到代碼運(yùn)行正常: 

如何在JavaScript中運(yùn)行.NET Core代碼_json

四、結(jié)論

DotNetJS目前還不完善,生成的JS代碼文件??dotnet.js??尺寸較大,demo代碼就有11M。

到此這篇關(guān)于如何在JavaScript中運(yùn)行.NET Core代碼詳情的文章就介紹到這了,更多相關(guān)JavaScript中運(yùn)行.NET Core內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 重寫javascript中window.confirm的行為

    重寫javascript中window.confirm的行為

    javascript中window.confirm這個方法很好用,可以彈出一個確認(rèn)對話框.但有一個問題是,它默認(rèn)的情況下,將選中那個"確定"按鈕,當(dāng)用戶有意無意的在鍵盤回車,就是說按下Enter鍵的時候,就會自動返回true。在很多時候其實(shí)我們不希望這樣
    2012-10-10
  • 微信小程序?qū)崿F(xiàn)左滑動刪除效果

    微信小程序?qū)崿F(xiàn)左滑動刪除效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)左滑動刪除效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • javascript定義函數(shù)的方法

    javascript定義函數(shù)的方法

    javscript中定義和聲明函數(shù)有三種方式:正常方法 構(gòu)造函數(shù) 函數(shù)直接量。
    2010-12-12
  • bootstrap datetimepicker 日期插件在火狐下出現(xiàn)一條報錯信息的原因分析及解決辦法

    bootstrap datetimepicker 日期插件在火狐下出現(xiàn)一條報錯信息的原因分析及解決辦法

    日期插件 bootstrap-datetimepicker 在火狐下出現(xiàn)一條報錯信息:TypeError: (intermediate value).toString(…).split(…)[1] is undefined.什么原因?qū)е碌哪兀旅嫘【幗o大家分享解決思路,需要的朋友參考下
    2017-03-03
  • JavaScript壓縮并加密圖片的方法你了解嗎

    JavaScript壓縮并加密圖片的方法你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 分享十八個殺手級JavaScript單行代碼

    分享十八個殺手級JavaScript單行代碼

    這篇文章主要給大家分享了十八個殺手級JavaScript單行代碼,這些單行代碼可以幫助你提高工作效率并可以幫助調(diào)試代碼,對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-10-10
  • JS如何生成隨機(jī)驗(yàn)證碼

    JS如何生成隨機(jī)驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了JS如何生成隨機(jī)驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • js調(diào)試系列 控制臺命令行API使用方法

    js調(diào)試系列 控制臺命令行API使用方法

    上次初步介紹了什么是控制臺,以及簡單的 console.log 輸出信息。最后還有兩個小問題,我們就當(dāng)回顧,來看下怎么操作吧
    2014-06-06
  • js獲取瀏覽器的可視區(qū)域尺寸的實(shí)現(xiàn)代碼

    js獲取瀏覽器的可視區(qū)域尺寸的實(shí)現(xiàn)代碼

    js獲取瀏覽器的可視區(qū)域尺寸的實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2011-11-11
  • 理解JavaScript中的對象 推薦

    理解JavaScript中的對象 推薦

    JavaScript有一種object數(shù)據(jù)類型,但是這種對象不同于c#或vb中的對象,在c#中,我們通過類創(chuàng)建一個對象,一個類相當(dāng)于創(chuàng)建對象的模板,定義了對象的屬性和方法,這些對象和方法將永遠(yuǎn)固定,我們不能在運(yùn)行時不能增加對象的屬性和方法。
    2011-01-01

最新評論

内丘县| 望奎县| 扶沟县| 玉门市| 灌云县| 麟游县| 阳谷县| 广元市| 凌海市| 绍兴市| 克东县| 大余县| 聂荣县| 望都县| 长海县| 沈阳市| 南陵县| 中江县| 长寿区| 全州县| 垣曲县| 新安县| 葫芦岛市| 永宁县| 攀枝花市| 阿图什市| 巧家县| 乌鲁木齐市| 宁夏| 商城县| 霍城县| 双鸭山市| 长兴县| 五河县| 正蓝旗| 平顺县| 康马县| 辽中县| 白玉县| 都兰县| 垣曲县|