如何使用 Crow C++ 返回 CSS/JS?

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

我尝试返回

load.css
文件和
index.html
,但它给了我 404 错误。我尝试手动读取文件并设置
res.body == load.css
数据,但这会使请求卡在加载上。

我做错了什么?

void foo() {
    crow::SimpleApp app;
    crow::mustache::set_global_base("/home/cereza/testing/src/frontend/src/");

    CROW_ROUTE(app, "/") ([] () {
        auto page = crow::mustache::load("html/index.html");
        return page.render();
    });

    CROW_ROUTE(app, "/style/load.css") ([] () {
        crow::response res;
        res.set_static_file_info("style/load.css");
        return res;
    });
}

我已经尝试更改路径并测试文件是否正在读取。

html c++ css backend crow
1个回答
0
投票

您不需要为 JS 和 CSS 文件制作单独的路由。这些是您的网站提供的“静态”文件,它们位于一个名为“static”的特殊文件夹中。

您的项目结构应该如下所示:

└── appRoot/
    ├── static/
    │   ├── jsFile1.js
    │   ├── jsFile2.js
    │   ├── cssFile1.css
    │   └── cssFile2.css
    ├── templates/
    │   ├── index.html
    │   └── page2.html
    ├── server.cpp
    └── otherCppFile.cpp

从服务器中删除额外的路由:

int main() {
    crow::SimpleApp app;
    crow::mustache::set_global_base("/home/cereza/testing/src/frontend/src/");

    CROW_ROUTE(app, "/") ([] () {
        auto page = crow::mustache::load("html/index.html");
        return page.render();
    });
}

然后在你的

index.html
文件中,你可以像平常一样包含js和css:

<link rel="stylesheet" href="/static/cssFile1.css">
<script src="/static/jsFile1.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.