开发者生态
morning
Vermell – 使用 epoll 的最小、无依赖的 C++ Web 框架
2026-09-01
1 阅读
约9分钟阅读
standar-donkey
字号:
专为现代 C++ 环境设计的最小、零膨胀 Web 框架。快速、结构化且类型严格。 Vermell 是一种适用于现代 C++ 环境的 Web 框架:要包含一个标头,要链接一个静态库,仅此而已。没有运行时,没有垃圾收集器,没有特定于框架的 DSL,没有供应商的依赖项——您编写的是 C++,运行的是 C++。在底层,它是一个事件驱动的引擎:一个非阻塞的 epoll 循环读取请求并将工作交给工作线程池。这种分离使得 Vermell 在负载下速度更快,并且能够应对速度较慢的客户端。零依赖——仅基础 Linux API(socket、epoll、pthreads、fork/exec)。构建的一个命令 - g++ -std=c++20 server.cpp -o exe -lvermell 。任何使用 g++ 的 Linux — x86_64、ARM(aarch64、armv7)、通过 Termux、WSL、Raspberry Pi、容器的 Android。默认情况下经过强化——超时、请求上限、连接限制和渲染监狱都是开箱即用的。树内 JSON DOM — 严格的 RFC 8259 解析器和序列化器、类型化参数、原始正文、分段上传。 C++ 模板 — compose() 模块和 render() 变量。流畅的配置——一个configure({...})调用或可链接的setter,在运行时可读。 📚 完整文档:vermell.cc — 双语 (EN/ES) 手册,涵盖本自述文件的每个部分,并附有示例和图表。安装 快速入门 编译路由和处理程序 服务器配置 MIME 类型和文件渲染 静态目录 模板:撰写和渲染 渲染安全流程和环境示例 支持 测试 贡献许可证 $ git clone https://github.com/vermellcc/vermell.git $ cd Vermell $ cmake 。 $ cmake --build . $ make install 即用型脚手架: $ npx create-vermell-static $ docker pull vermellcc/vermell amd64 、 arm64 和 armhf 的软件包位于 GitHub 页面上,已签名并准备添加: $ sudo install -d -m 0755 /etc/apt/keyrings $curl -fsSL https://vermellcc.github.io/vermell/vermell-apt-key.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/vermell.gpg $ echo " deb [signed-by=/etc/apt/keyrings/vermell.gpg] https://vermellcc.github.io/vermell stable main " | sudo tee /etc/apt/sources.list.d/vermell.list $ sudo apt-get update $ sudo apt-get install -y libvermell 密钥指纹: 022D 56AA 7A6B 2028 B005 3629 F616 54D8 8AD1 C323 Vermell 服务器是一个路由器:为路由注册一个处理程序,选择一个端口,然后调用听() 。 # include < vermell/vermell.h > int main () { 路由器 router;路由器。设置端口(8080);路由器。 get ( " / " , { [](Query &http) { http.send ( " 来自 Vermell 的问候 " ); }});路由器。听 ();处理程序周围的 { ... } 很重要。 router.get(...) 的第二个参数是 MiddlewareList ,因此处理程序始终作为花括号列表传递: router.get("/", { [](Query &http) { ... } }) 。编译并运行: $ g++ -std=c++20 server.cpp -o exe -lvermell $ ./exe 然后将浏览器指向它或使用curl: $ curl http://localhost:8080/ Hello from Vermell router.listen() 块并永远服务。 ListenOne() 服务一个请求并返回——对于测试和一次性服务器来说很方便。一次 g++ 调用即可编译并链接所有内容 - 没有额外的标志,没有链接顺序游戏: $ g++ -std=c++20 server.cpp -o exe -lvermell 对于较大的项目,请使用 CMake,但服务器始终只需要一个命令即可。可移植性。 Vermell 没有依赖项,因此任何源自 Linux 并具有 C++20 g++ 的东西都可以构建它:x86_64、ARM(aarch64、armv7)、通过 Termux 的 Android、WSL、Raspberry Pi、容器。 macOS 和 Windows 不是受支持的目标 (epoll)。没有根?没问题。在 Termux(或任何没有 root 的系统)上,您无法将安装安装到 /usr/local 中。通过相对路径 ( #include "../include/vermell/vermell.h" ) 包含头文件并直接链接静态库 — 将 libvermell.a 复制到源代码旁边并使用 -L 进行编译。 -lvermell : // Termux / no-root build: 相对路径引用的头 # include " ../include/vermell/vermell.h " int main () { Router router;路由器。设置端口(8080);路由器。 get ( " / " , { [](Query &http) { http.send ( " hi from termux " ); }});路由器。听 (); $ cp libvermell.a 。 # 源旁边的静态库 $ g++ -std=c++20 server.cpp -o exe -L. -lvermell $ ./exe 路由器为每个 HTTP 谓词公开一种注册方法。通过透明哈希路由映射在 O(1) 内调度静态路由。 router.get( " /users " , { [](Query &web) { web.send ( " list " ); } });路由器。 post ( " /users " , { [](Query &web) { web.send ( " create " ); } }); router.put( " /users/:id " , { [](Query &web) { web.send ( " update " ); } }); router.deleteX( " /users/:id " , { [](Query &web) { web.send
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱