如何将 HTML/JS 前端文件嵌入到 C++ Web 服务器可执行文件中?

问题描述 投票:0回答:1

我有一个 C++ 应用程序,它使用 httplib 从文件夹中提供 HTML/JS 前端服务。目前,我需要编译的 C++ 程序和此文件夹才能使应用程序正常工作。有没有办法将前端文件夹嵌入到 C++ 可执行文件中以创建单文件应用程序?

这是我当前设置的一个最小示例:

#include <iostream>
#include <thread>
#include <httplib.h>

httplib::Server rest;

void run_rest_server(const int port)
{
    try
    {
        rest.set_mount_point("/", "./frontend");
        rest.listen("0.0.0.0", port);
    }
    catch (const std::exception&)
    {
        std::cout << "Could not start REST Server" << std::endl;
    }
}

int main()
{
    std::thread(run_rest_server, 81).detach();
    while (true) { /*...*/ }
}

我找到了一种基于资源的方法,但它需要单独嵌入每个文件,这对于包含数百个文件的前端文件夹来说是不切实际的。有没有更有效的方法?

此外,我正在不断更新前端,因此保持高效的开发工作流程对我来说至关重要。理想情况下,我想要一个解决方案,我仍然可以单独处理前端代码,只需要运行 C++ 编译器即可发布应用程序的新版本。

c++ webserver httplib
1个回答
0
投票

即使您的 C++ 后端受到限制,您也可以采取多种途径来使您的流程可扩展且对开发人员友好。

  1. 与 C++ 后端分开提供 HTML 文件。 例如:生成的每个新 html 文件应自动将目录更改推送到 github 存储库,这将启动 Github Action / CI / CD 进程来更新托管在 Vercel (或 Netlify,或甚至 Github Pages)都是免费的。 现在,您可以将这个新托管的网页作为 iframe 嵌入到您的 C++ 后端中,并且每次生成新的 HTML 文件以及静态文件的后续部署时,您也应该能够在您的 C++ 托管服务器上看到它。

  2. 更新您的 C++ 代码以持续侦听对新目录的任何更改,并且每次生成 HTML 时,您都应该将其添加到服务器上的该目录(通过添加一个端点,允许您作为管理员将文件添加到服务器,或者通过在服务器本身上生成 HTML)。侦听目录更改的 C++ 代码应该能够帮助您更新可能已添加或更新的任何新页面!

无论您采取哪种方式,都要知道,只要文件托管在互联网上的某个位置,您就应该能够设置 iframe/重定向到该页面。希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.