gpt4 book ai didi

html - 我不明白一段代码中 C++ 和 HTML 之间的合并

转载 作者:行者123 更新时间:2023-11-28 00:27:29 27 4
gpt4 key购买 nike

在过去的几天里,我一直在修补 Arduino IDE + ESP32 Core 和 DOIT ESP32 DEVKITV1。

我想使用 Hieromon's AutoConnect 创建一个网络界面我浏览了他的 API 库,我完全不明白的是 HTML 和 C++ 的“合并”。

/**< Common html document header. */
const char AutoConnect::_ELM_HTML_HEAD[] PROGMEM = {
"<!DOCTYPE html>"
"<html>"
"<head>"
"<meta charset=\"UTF-8\" name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
};

/**< LuxBar menu element. */
const char AutoConnect::_ELM_MENU[] PROGMEM = {
"<header id=\"luxbar\" class=\"luxbar-fixed\">"
"<input type=\"checkbox\" class=\"luxbar-checkbox\" id=\"luxbar-checkbox\"/>"
"<div class=\"luxbar-menu luxbar-menu-right luxbar-menu-material-bluegrey\">"
"<ul class=\"luxbar-navigation\">"
"<li class=\"luxbar-header\">"
"<a href=\"" AUTOCONNECT_URI "\" class=\"luxbar-brand\">MENU_TITLE</a>"
"<label class=\"luxbar-hamburger luxbar-hamburger-doublespin\" id=\"luxbar-hamburger\" for=\"luxbar-checkbox\"><span></span></label>"
"</li>"
"<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_CONFIG "\">Configure new AP</a></li>"
"<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_OPEN "\">Open SSIDs</a></li>"
"<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_DISCON "\">Disconnect</a></li>"
"<li class=\"luxbar-item\" id=\"reset\"><a href=\"#rdlg\">Reset...</a></li>"
"<li class=\"luxbar-item\"><a href=\"HOME_URI\">HOME</a></li>"
"</ul>"
"</div>"
"<div class=\"lap\" id=\"rdlg\"><a href=\"#reset\" class=\"overlap\"></a>"
"<div class=\"modal_button\"><h2><a href=\"" AUTOCONNECT_URI_RESET "\" class=\"modal_button\">RESET</a></h2></div>"
"</div>"
"</header>"
};

/**< The 404 page content. */
const char AutoConnect::_PAGE_404[] PROGMEM = {
"{{HEAD}}"
"<title>Page not found</title>"
"</head>"
"<body>"
"404 Not found"
"</body>"
"</html>"
};

/**< The page that started the reset. */
const char AutoConnect::_PAGE_RESETTING[] PROGMEM = {
"{{HEAD}}"
"<meta http-equiv=\"refresh\" content=\"{{UPTIME}};URL=" AUTOCONNECT_URI "\">"
"<title>AutoConnect resetting</title>"
"</head>"
"<body>"
"<h2>{{RESET}}</h2>"
"</body>"
"</html>"
};

可以看到,这是多个HTML页面的声明。它开始于:

const char AutoConnect::_ELM_HTML_HEAD[] PROGMEM = {
"<!DOCTYPE html>"
"<html>"
"<head>"
"<meta charset=\"UTF-8\" name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
};

他在那里打开了 html 和 head 标签,并且从未关闭过它们。

然后他继续“制作另一个HTML页面”

const char  AutoConnect::_PAGE_404[] PROGMEM = {
"{{HEAD}}"
"<title>Page not found</title>"
"</head>"
"<body>"
"404 Not found"
"</body>"
"</html>"
};

在这里我们找到了 "{{HEAD}}" 以及 html 和 head 的结束标签。

这样下去。

现在,据我所知,他使用 const char AutoConnect::_ELM_HTML_HEAD[] PROGMEM 制作了一个 HEAD,这实际上是每个 HTML 页面的开始。

现在我不明白的是为什么它被命名为 HEAD 而不是上面声明中的 _ELM_HTML_HEAD。

还有为什么以及如何将它与 {{}}(双花括号)一起使用。我试着在谷歌上查找它,但没有找到相关的解释。

你认为你能帮助我理解吗?或者至少给我指出一些有用的指南?

谢谢!

最佳答案

您的问题的答案可能是 here .

在你的例子中,HEAD 是一个占位符,由

返回
String AutoConnect::_token_HEAD(PageArgument& args) {
return String(_ELM_HTML_HEAD);
}

看:

PageElement page404(_PAGE_404, { { "HEAD", std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1) } });
String html = page404.build();

关于html - 我不明白一段代码中 C++ 和 HTML 之间的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54573907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com