将标准引入标准::web_view设施有什么好处?

What are the benefits of introducing std::web_view facility into the standard?

本文关键字:标准 什么 设施 web view      更新时间:2023-10-16

根据图书馆进化孵化器的最新会议,获得大力支持的设施之一是std::web_view

该提案在P1108R2中进行了描述,将用于

通过利用 现有的网络标准和技术。

std::web_view w("web_view test app");
w.set_uri_scheme_handler("wv", [&](const std::string &uri, std::ostream &os) {
std::cout << "request: " << uri << "n";
os << "<html><head><title>" << uri << "</title></head><body><p>" << uri << "</p><table>";
for (auto &a : args)
os << "<tr><td>" << a << "</td></tr>" << "n"; // we need some kind of "to_html" utility function.
os << "</table>";
os << "<p><a href="" << uri << "/more.html" << "">more</a></p>";
os << "<ul id='dl'></ul>";
os << "</body></html>";

从我从提议的例子中看到的,设计基本上会发出JavaScript/HMTL代码。

我对这种方法会产生什么好处没有正确的理解。有人可以提供更深入的设施视图吗?

我将首先以正确的StackExchange方式回答这个问题。您链接的文档在"简介"部分中非常清楚地说明了其动机:

现实情况是,大多数用户不使用命令提示符(即控制台 I/O)与应用程序交互,而是使用一些图形用户界面。然而,C++标准在这方面没有提供有用的工具,因此,用户要么需要使用特定于系统的API,第三方库,要么迁移到不同的编程语言。

[...]

不幸的是,这个委员会既没有时间也没有专业知识来通过直接创建一些足够全面的 API 来解决这个问题。[...]唯一可行的方法是接触解决这一问题的庞大而充满活力的社区,在这个领域创建便携式标准,并直接利用他们的努力。

因此,简而言之,C++社区没有足够的资源(人员和专业知识)来实现完整的GUI和高级服务库。毕竟,我自己只能提到一个在功能方面可以与HTML+JS相媲美的C++GUI库,那就是Qt库。

现在我还想在答案中添加更多固执己见的部分,因为这个问题有点要求它。即使没有JavaScript,HTML和CSS在几行代码中显示你想要的东西方面也非常强大。它们提出了一个广为人知的展示事物的框架。在大多数其他 GUI 框架中,您还会在"HTML 面板"中遇到 HTML,通常是在尝试呈现格式化文本时。

HTML+JavaScript允许初学者在编程一段时间后获得视觉上有趣的结果这一事实也非常重要。在没有编程知识的情况下在C++中启动 GUI 应用程序并不容易 - 您需要获取并构建一个 GUI 框架。如果我们让初学者能够通过HTML渲染他们用C++编写的程序,社区可能会增长。