你会学到什么
- 独立使用 Qt 和 CEF 开发混合桌面应用
- 独立开发 Node-API 扩展
- 理解 C++ 反射以及借助 libclang 编写反射编译器
- 学会如何在 CEF 中加载 Node-API 扩展
课程简介
当前 C++ 桌面开发框架最流行的是 Qt ,前端桌面开发框架最成熟的是 Electron,它们本身都有自己的不足:Qt 的开发成本太高,Electron 的 native 能力太弱。那有没有取长补短的方式呢?有,我们可以在 Qt 里内嵌 CEF ,然后在 CEF 里内嵌 Node.js ,打造一个加强版本的 Electron 。
我带领公司开发 AOI 检测软件的过程中,经过了团队组建这个过程,深刻地体会到对于一个创业公司而言,靠谱的C++ 开发人员的招聘是多么的不易。作为一个工业领域的专业软件,我们软件里需要实现极其复杂的交互逻辑,又需要对接上百种硬件,因此,使用纯 Qt 会让我们的代码维护极其困难,使用 Electron 又会让我们束手束脚。
经过一年多调研两年多打磨,我们沉淀出了这套桌面开发解决方案,它上可快速接入来自 Node.js 生态的众多轮子,下可与各种硬件自由交互。借着本小册的机会,我想把这套桌面开发解决方案分享给大家。
当然,对于中小型软件,很有可能仅用 Electron 或者仅用 Qt 就可以完成了,不需要这么复杂的解决方案,基于此,我将小册的内容分为两大部分:
- 基础部分,其中包括开发环境的搭建,Qt 中如何嵌入 CEF、Node-API 扩展的使用等,这些知识在大部分混合桌面开发框架里都能用得上。对于每一个知识点,我将用全网最精简的代码演示其用法,并且在基础部分的最后,搭配两个综合实战例子加强巩固。
- 进阶部分,这部分会介绍 Qt 的事件循环以及如何在 CEF 中集成 Node.js 等内容。如果你想打造一套自己熟悉的混合桌面开发解决方案,或者想对 CEF 的底层原理有更清楚的认识,这部分内容绝对不能错过。
课程目录
开篇词|打造可进可退的混合桌面开发框架
如何使用 CMake 作为构建工具开发 Qt 应用?
如何在 Qt 中内嵌 CEF 加载在线网页?
如何在 CEF 内加载使用 Webpack 打包后的离线网页?
如何在网页内使用 QWebchannel 与主进程通信?
如何使用纯 CMake 创建 n-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?
讲师介绍
杨科山,目前在一家工业视觉装备公司任技术专家,硕士期间研究方向是视觉 SLAM 与目标检测,曾在阿里巴巴天池 Fashion AI 等多个比赛里获得过 Top1 的成绩,从零为公司搭建了 AOI 工业光学检测软件并验收了数十个项目,超过五年 C++ 开发经验。