这门课解决什么问题

做桌面端开发时,很多人会在原生框架与跨平台 Web 技术之间反复纠结。用 Electron 上手极快,但遇到庞大的内存占用和底层系统调用时往往束手无策;改用纯 Qt 开发虽然性能可控,但面对复杂的富交互界面,开发效率又大打折扣。这门课正是为了打破这种非此即彼的困局,带你在 Qt 中内嵌 CEF,并在其中融合 Node.js,打造一个可进可退的混合桌面开发框架。它既保留了 Qt 在底层绘制与系统级调用上的优势,又复用了 Node.js 生态与前端的灵活性。如果你的实际业务场景对内存占用敏感,同时又必须承载复杂的 Web 交互,或者你需要逐步将庞大的 Electron 应用向底层重构,这套方案能直接给出落地路径。

适合什么基础与建议学习顺序

这并非零基础入门课,你需要具备一定的 C++ 与前端开发经验,最好写过基本的 Qt 界面或 Node.js 脚本。资料整体围绕构建工具链、框架内嵌、跨进程通信与底层扩展封装展开。建议先从 CMake 构建 Qt 应用的部分入手,把本地编译环境彻底跑通,这是后续所有内嵌操作的地基。接着按顺序看 CEF 加载在线与离线网页的内容,理解 Web 视图与主进程的边界。随后重点研读 QWebChannel 通信机制,这部分决定了你的界面与底层能否顺畅联动。最后再去啃 Node-API 扩展相关的章节,这部分难度最高,涉及 C++ 类包装为 JavaScript 类、元对象系统对接以及异步任务处理,是整个框架真正发挥威力的核心所在。

学完能独立做什么与资料配合方法

跟着这套流程走下来,你能够独立设计并开发一个兼顾性能与前端生态的混合桌面应用。具体来说,你可以自行搭建一套用 CMake 驱动的 Qt 工程项目,按需内嵌浏览器内核,并打通前端 JavaScript 与 C++ 底层的双向通信。在面对需要调用本地系统底层能力、处理高频异步任务时,你能把复杂的业务逻辑下沉到 C++ 侧执行,再把结果安全地抛回给上层网页。在配合练习时,不要只停留在看资料,强烈建议按章节同步建一个空仓库。每看完一个环节,就对应写一段最小可运行的验证代码:比如先实现一个网页按钮通过 QWebChannel 触发原生命令,再尝试写一个 Node-API 扩展把一个简单的 C++ 工具类暴露给前端调用。把编译报错和调试过程当成理解框架边界的试金石,比单纯通读几遍文档要扎实得多。


在 Qt 里内嵌 CEF ,然后在 CEF 里内嵌 Node.js,从 Qt 和 Node.js 两大框架里取长补短,打造一个加强版本的 Electron。

课程目录

*   开篇词|打造可进可退的混合桌面开发框架

*   如何使用 CMake 作为构建工具开发 Qt 应用?

*   如何在 Qt 中内嵌 CEF 加载在线网页?

*   如何在 CEF 内加载使用 Webpack 打包后的离线网页?

*   如何在网页内使用 QWebchannel 与主进程通信?

*   如何使用纯 CMake 创建 Node-API 扩展?

*   如何在 Node-API 扩展中调用来自前端的回调函数?

*   如何在 Node-API 扩展中将 C++ 类包装为 Javascript 类?

*   如何在 Node-API 扩展中使用 Qt 的元类型和元对象系统?

*   如何在 Node-API 扩展中配合 Qt 处理异步任务?

*   如何使用 libclang 配合 CMake 实现 C++ 反射?

*   如何在 Node-API 扩展中使用 Qt 的信号?

*   实战:如何使用 WebGL 显示本地图片?

*   实战:如何基于 Node-API 扩展解码播放本地视频?

*   进阶:CEF 编译

*   进阶:如何在 CEF 渲染进程中集成 Qt 的事件循环?

*   进阶:如何在 CEF 渲染进程内集成 Node.js?

*   进阶:如何在非 Node.js 扩展里使用 Node-API?