deno_webview: 使用 Rust 为 Deno 绑定 webview,可用来开发桌面 GUI

使用 Rust 为 Deno 绑定 webview,可用来开发桌面 GUI。

代码示例:

import { WebView } from "../mod.ts";

const html = (n: number) =>
  `
  <html>
  <body>
    <h1>${n}</h1>
  </body>
  </html>
`;

const webview1 = new WebView({
  title: "Multiple deno_webview example",
  url: `data:text/html,${encodeURIComponent(html(1))}`,
  width: 400,
  height: 200,
  resizable: true,
  debug: true,
  frameless: false,
});

const webview2 = new WebView({
  title: "Multiple deno_webview example",
  url: `data:text/html,${encodeURIComponent(html(2))}`,
  width: 400,
  height: 200,
  resizable: true,
  debug: true,
  frameless: false,
});

await Promise.all([webview1.run(), webview2.run()]);

运行效果:

5 个赞

很赞啊,开发小工具岂不方便到上天

2 个赞

赞赞赞

:+1:

运行下下载完依赖后报错了

可以把错误信息贴出来。如果确实是 bug,可以提 issue

deno_webview 现在不支持 Deno 1.10 ,请问现在是否有其他的替代品呢?

目前还没有

打包后文件体积有多大?

非常小,没有捆绑 chromium,直接调用的系统 webview。优点是体积小,缺点是有兼容性问题,如果系统没有 chromium 内核的浏览器则会使用其他内核。

为啥不用flutter,至少flutter web的核心组件skia已经有官方的wasm绑定:canvaskit,通过typescript调用canvaskit直接绘图

我猜应该已经有人在做了吧

Deno官网上第三方库已经有canvaskit canvas@v1.1.4 | Deno

1 个赞

error: TS2339 [ERROR]: Property ‘utime’ does not exist on type ‘typeof Deno’. ‘Deno.utime’ is an unstable API. Did you forget to run with the ‘–unstable’ flag?

deno 1.11.1 (release, x86_64-pc-windows-msvc)
v8 9.1.269.35
typescript 4.3.2

deno run –-unstable ...

运行的时候加上 –-unstable 参数。因为 utime 这个 API 还没不稳定。

在win10中没跑起来,可能是我的deno是最新版,在win10子系统的ubuntu中也没跑起来,都报错了.

e:/deno/webview/examples> deno run --unstable --allow-all local.ts
Download https://github.com/webview/webview_deno/releases/download/0.5.6/webview_deno.dll
error: Uncaught (in promise) Error: Could not obtain symbol from the library: 找不到指定的程序。 (os error 127)
  return Deno.openPlugin(file.path);
              ^
    at deno:core/core.js:86:46
    at unwrapOpResult (deno:core/core.js:106:13)
    at Object.opSync (deno:core/core.js:120:12)
    at Object.openPlugin (deno:runtime/js/40_plugins.js:8:22)
    at Module.prepare (https://deno.land/x/plug@0.2.9/plug.ts:87:15)
    at async load (file:///E:/deno/webview/plugin.ts:75:9)
    at async file:///E:/deno/webview/mod.ts:5:1

好像是不兼容 deno 1.10,已经有人提 issue 了

恩恩,等稳定了,再来体验下,期待 :+1:

:joy:本身deno打包后的体积也不小了

现在这个库的example好像跑不起来