我最近听说过使用 emscripten 将 C++ 代码编译为 javascript,以及如果完成 asmjs 优化,它有可能真正快速地运行应用程序。
我已经阅读了几篇文章、教程,甚至还听过一些非常有趣的youtube 视频。我也成功运行了 hello world 示例。
但是,我不知道这种方法的全部功能,特别是如果一个全新的web 应用程序可以/应该作为一个整体用 C++ 编写,而不需要胶水代码。
更具体地说,我想写一些类似于以下 C++ 的东西(作为参考不工作的代码)。
#include <window>
class ApplicationLogic : public DOMListener{
private:
int num;
public:
ApplicationLogic():num(0);
virtual void onClickEvent(DOMEventData event){
num++;
}
virtual ~ApplicationLogic(){}
}
int main(){
DOMElement but = Window.getElementById("foo");
ApplicationLogic app();
but.setOnclick(app);
}
我希望它可以明确这个想法,但目标是实现类似于:
初始化模块的静态函数在窗口准备好时运行(与 jquery.ready() 的行为相同)。因此可以将侦听器添加到 DOM 元素中。
一种直接从 C/C++ 与 DOM 交互的方式,因此
#include <window>
,基本上可以访问 DOM 和其他元素,如 JSON、Navigator 等。
我一直在思考 Lua,以及当 lua 脚本包含共享对象(动态链接库)时,它如何在该 .so 文件中搜索初始化函数,并且会注册从模块外部可用的函数,确切地说是如何返回asmjs 中创建的功能模块的作用。但我不知道如何直接用 C++ 模拟 jquery.ready。
正如你所看到的,我对 asmjs 知之甚少,但我没有找到我正在寻找的教程或类似内容,我已经阅读了对 stdlibc、stdlibc++ 和 SDL 的编译时包含的标准库的引用,但没有关于如何从 C++ 源代码操作 DOM。