根据图书馆进化孵化器的最新会议,获得大力支持的设施之一是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>";
Run Code Online (Sandbox Code Playgroud)
从我从提议的示例中可以看出,该设计基本上会发出 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++ 编写的程序,那么社区可能会发展壮大。
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |