如何使用单纯的`WebAssembly`

简介: 如何使用单纯的`WebAssembly`

一般来说在.net core使用WebAssembly都是Blazor,但是Blazor渲染界面,.net core也提供单纯的WebAssembly这篇博客我将讲解如何使用单纯的WebAssembly

安装WebAssembly模板

dotnet new install Microsoft.NET.Runtime.WebAssembly.Templates

安装完成以后在vs的新建项目的时候会出现如图的模板

然后我们下一步创建一个WebAssembly的项目,WebAssembly的项目很单纯,项目结构如下图:

我们可以看到项目及其简单,分别查看文件代码

Program.cs

using System;
using System.Runtime.InteropServices.JavaScript;

Console.WriteLine("Hello, Browser!");

public partial class MyClass
{
   
   
    [JSExport]
    internal static string Greeting()
    {
   
   
        var text = $"Hello, World! Greetings from {GetHRef()}";
        Console.WriteLine(text);
        return text;
    }

    [JSImport("window.location.href", "main.js")]
    internal static partial string GetHRef();
}

main.js

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

import {
   
    dotnet } from './dotnet.js'

const {
   
    setModuleImports, getAssemblyExports, getConfig } = await dotnet
    .withDiagnosticTracing(false)
    .withApplicationArgumentsFromQuery()
    .create();

setModuleImports('main.js', {
   
   
    window: {
   
   
        location: {
   
   
            href: () => globalThis.window.location.href
        }
    }
});

const config = getConfig();
const exports = await getAssemblyExports(config.mainAssemblyName);
const text = exports.MyClass.Greeting();
console.log(text);

document.getElementById('out').innerHTML = text;
await dotnet.run();

index.html

<!DOCTYPE html>
<!--  Licensed to the .NET Foundation under one or more agreements. -->
<!-- The .NET Foundation licenses this file to you under the MIT license. -->
<html>

<head>
  <title>WebAssemblyDemo</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="modulepreload" href="./main.js" />
  <link rel="modulepreload" href="./dotnet.js" />
</head>

<body>
  <span id="out"></span>
  <script type='module' src="./main.js"></script>
</body>

</html>

这些代码及其简单,如果在遇到js性能瓶颈的时候就可以使用当前这种模式,使用单纯的WebAssembly去提高我们的产品性能

试试看执行一下程序,效果如下图:

目录
相关文章
|
10月前
|
存储 Rust 前端开发
给 Web 前端工程师看的用 Rust 开发 wasm 组件实战
wasm 全称 WebAssembly,是通过虚拟机的方式,可以在服务端、客户端如浏览器等环境执行的二进制程序。它有速度快、效率高、可移植的特点
161 0
|
10月前
|
Go 虚拟化 云计算
如何在 Go 语言开发的宿主程序中嵌入 WebAssembly
如何在 Go 语言开发的宿主程序中嵌入 WebAssembly
|
Web App开发 存储 JavaScript
使用AssemblyScript 构建 WebAssembly 应用
WebAssembly,也称为 Wasm,是为 Web 创建的二进制格式。它允许通过从常规 JavaScript 访问的相同 Web API 访问浏览器功能。
692 0
使用AssemblyScript 构建 WebAssembly 应用
|
7月前
|
Rust 前端开发 JavaScript
Rust 编译为 WebAssembly 在前端项目中使用(二)
Rust 编译为 WebAssembly 在前端项目中使用(二)
175 0
|
2月前
|
Rust JavaScript 前端开发
深入探讨WebAssembly在现代Web开发中的应用
随着互联网技术的不断进步,传统的Web开发方法已经无法满足现代应用程序对性能和功能的高要求。WebAssembly(简称Wasm)作为一种新兴的技术,为解决这一问题提供了独特的视角和方法。本文将从WebAssembly的基本概念出发,详细探讨其在前端开发中的应用,包括与JavaScript的互操作性、在性能优化方面的优势,以及如何通过实例来实现复杂应用的性能提升。此外,文章还将探讨WebAssembly在未来Web开发中的潜在发展方向,旨在为开发者提供一种全新的视角,以更高效、更强大的方式构建Web应用。
|
2月前
|
Web App开发 Rust JavaScript
Rust 笔记:WebAssembly 的 JavaScript API
Rust 笔记:WebAssembly 的 JavaScript API
114 0
|
2月前
|
Rust JavaScript 前端开发
【一起学Rust | 框架篇 | iced框架】rust原生跨平台GUI框架——iced
【一起学Rust | 框架篇 | iced框架】rust原生跨平台GUI框架——iced
485 0
|
Rust JavaScript 前端开发
将 Rust 程序编译为 WebAssembly 的知识与实践
本文记叙如何将一个 Rust 语言编译成可执行的 WebAssembly 文件。
185 0
|
7月前
|
Rust 前端开发 JavaScript
Rust 编译为 WebAssembly 在前端项目中使用(一)
Rust 编译为 WebAssembly 在前端项目中使用(一)