【问题标题】:It is possible to just use QT and WebAssembly (instead of HTML + CSS + JavaScript) to develop a front-end web?可以只使用 QT 和 WebAssembly(而不是 HTML + CSS + JavaScript)来开发前端 Web 吗?
【发布时间】:2023-03-05 04:08:02
【问题描述】:

我是一名 C++ 程序员,但由于某种原因,我不得不自己开发一个网站(我自己的商业项目)。我不想花很多时间学习 JavaScript 和其他东西。是否可以只使用 QT 和 WebAssembly(而不是 HTML + CSS + JavaScript)来开发前端 Web?

【问题讨论】:

  • 没有,PC端的Frifox、Chrome等主流浏览器对我来说都够用了。

标签: c++ qt web frontend webassembly


【解决方案1】:

是的,这是绝对可能的,我目前正在为一个项目做这件事,但你应该根据项目要求、运行环境和你自己的背景谨慎地做。 以下是您可能会遇到的一些问题:

  1. 输出 .wasm 文件可能会变得太大。一般来说,它不适合公共领域的应用程序。
  2. 在低端设备中,如果您没有进行足够的代码级优化,您可能会发现它滞后。
  3. 主要浏览器尚未正式支持线程(截至 2019 年 12 月),但提供技术预览。这不是一个真正的大问题,因为它很快就会成为标准功能。
  4. 原生虚拟键盘无法在移动设备上使用,但工作正在进行中。

这些是我自己在使用 Qt for WebAssembly 时遇到的主要问题。 尽管如此,我发现它比 HTML+CSS 灵活得多。 QML 确实是一种很好的 UI 开发语言。创建动画 UI 非常简单直接。 您还可以在 QML 代码中使用许多 JavaScript 库,例如 Lodash 和 Moment 或任何其他不引用或操作窗口 DOM 的 js 库。

【讨论】:

    【解决方案2】:

    是的,这是可能的。但是,如果仅出于拒绝学习新技术的理由,您不应该这样做。 现在(当 Qt 5.14 存在时,我正在写这个答案)用于 webassembly 的 Qt 被部署为官方平台。不幸的是,这是一个年轻的平台支持,存在很多问题和可能的未来变化。 Qt 团队做得很好,所以下一个版本会更好。 5.14 在 webassembly 上下文中比 5.13 好得多,但仍需要修复。 您应该知道 Qt for webassembly 仅支持少数 Qt 模块,不包括小部件。是的,您只能将 QML 用于 GUI。 Qt for webassembly是为了移植其他平台的代码库而创建的(它通常是Qt开发方式,请参阅Qt for MCU)。与此堆栈中的其他技术(如 QRemoteObject)一起,是非常有趣的技术。它不是为正常网络中的网站创建的。用于 webassembly 目标的主要 Qt 是内部网络系统和设备的远程控制。请注意这一点。 不幸的是,并不是所有的浏览器都支持 webassembly。请参阅 Qt 以获取 weassembly 支持说明。 此外,在 Qt 中,您找不到内置的 rest-API 句柄或其他标准 Web 技术来与您现有的支持集成。

    【讨论】:

    • @quark,您将冒着在服务器端重新发明通信层或会话管理和 ORM 的风险。正如 JhnW 指出的那样,存在局限性:doc.qt.io/qt-5/qtwebassembly-platform-notes.html。如果您需要一个“类似应用程序”的 UI 而无需编写 JS,请考虑 Blazor ASP.Net Core Web Apps(C# 中)或 Google Web Toolkit(Java)……这些语言在 C++ 背景下更容易学习,而且框架需要很多与网络相关的任务和问题不在您的肩上。它们编译为 JS (GWT) 或 WASM (Blazor),并为客户端和服务器代码提供强大的调试器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多