跳转到主要内容

【开源软件】最好的开源软件-2022-第10名 PyScript

bos 2022 pyscript rev

WebAssembly酝酿已久的承诺之一是允许在web浏览器中使用JavaScript以外的语言。PyScript在浏览器中提供了完整的Python运行时,允许您在网页中使用Python作为一种成熟的脚本语言。甚至支持一些高级库,如NumPy,允许您使用本地HTML前端构建强大而复杂的应用程序,而不需要后端的Python服务器。请注意,PyScript目前是实验性的,而且很脆弱,通常启动时间很长。但作为对未来的一次窥视,PyScript是诱人的,它为许多可能性打开了大门。

【开源软件】最好的开源软件-2022-第9名 Wasmtime

bos 2022 wasmtime rev

与Node.js为JavaScript运行时所做的类似,Wasmtime允许开发人员在浏览器外利用WebAssembly在浏览器内提供的所有优势,包括安全的沙盒执行、接近本地的性能以及跨多种编程语言和平台的支持。Wasmtime的其他好处包括对CPU和内存使用的细粒度调整,Cranelift代码生成器的高速执行,以及随时了解新的WebAssembly功能。

虽然早期的Wasmtime版本已经被认为可以投入生产,但Wasmtime 1.0增加了一系列与性能相关的改进:更快地实例化Wasm模块,更智能地使用内存,以及通过优化的堆栈跟踪和协作多任务处理获得更好的运行时性能。这是一个重要的里程碑。

【Go语言高级开发】Go WebAssembly 教程 - 构建计算器教程

更新 - 本教程中的代码已更新以适用于 Go v1.12 中的重大更改

欢迎大家! 刚刚发布的 Go v1.11 包含了 WebAssembly 的实验性端口,我想看看我们如何编写自己的 Go 程序直接编译到 WebAssembly 会很棒!

因此,在本文中,我们将构建一个非常简单的计算器,让我们了解如何编写可以暴露给前端的函数、评估 DOM 元素并随后使用来自任何结果的结果更新任何 DOM 元素 我们调用的函数。

希望这将向您展示如何为您的前端应用程序编写和编译您自己的基于 Go 的程序。

注意 - 如果您还没有从开头猜到,则需要 Go v1.11 才能使本教程正常工作!

视频教程


如果您想支持我和我的努力,请查看本教程的视频版本并订阅我的频道!

https://youtu.be/4kBvvk2Bzis

介绍


那么这对 Go 和 Web 开发人员来说究竟意味着什么呢?好吧,它使我们能够使用 Go 语言编写我们的前端 Web 应用程序,以及随后的所有很酷的功能,例如它的类型安全、goroutines 等等。

【Go语言高级开发】使用 WebAssembly 和 Go 编写前端 Web 框架

JavaScript 前端框架无疑有助于突破以前在浏览器上下文中可能实现的界限。越来越复杂的应用程序已经出现在 React、Angular 和 VueJS 之类的基础上,仅举几例,而且有一个众所周知的笑话,即新的前端框架似乎每天都在问世。

然而,这种发展速度对于世界各地的开发者来说是一个非常好的消息。对于每一个新框架,我们都发现了更好的处理状态的方法,或者使用影子 DOM 之类的东西有效地渲染。

然而,最新的趋势似乎是朝着用 JavaScript 以外的语言编写这些框架并将它们编译到 WebAssembly 中。多亏了 Lin Clark 之类的人,我们开始看到 JavaScript 和 WebAssembly 通信方式的重大改进,而且随着 WebAssembly 开始在我们的生活中变得更加突出,我们无疑会看到更多重大改进。

介绍


因此,在本教程中,我认为构建一个非常简单的前端框架的基础是一个好主意,该框架用 Go 编写,可编译成 WebAssembly。至少,这将包括以下功能:

【WASM】很棒的 WebAssembly 语言

WebAssembly, or wasm for short, is a low-level bytecode format that runs in the browser just like JavaScript. It is designed to be faster to parse than JavaScript, as well as faster to execute which makes it a suitable compilation target for new and existing languages.

This repo contains a list of languages that currently compile to or have their VMs in WebAssembly(wasm) :octocat: