Недавно я слышал о компиляции кода на С++ в javascript с использованием emscripten и о том, как это сделать, если оптимизация asmjs выполняется, он может быстро запускать приложения.
Я прочитал несколько сообщений, учебник и даже услышал очень интересные видео youtube. Я также успешно выполнил пример hello world.
Однако я не знаю полных возможностей этого подхода, особенно если весь новый webapp может/должен быть написан на С++ в целом без кода клея.
Более конкретно я хотел бы написать что-то похожее на следующий С++ (в качестве ссылочного нерабочего кода).
#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.
-
Способ взаимодействия с DOM непосредственно из C/С++, следовательно
#include <window>
, в основном доступ к DOM и другим элементам, таким как JSON, Navigator и т.д.
Я продолжаю думать о Lua, и как, когда lua script включает общий объект (динамическая связанная библиотека), он искал функцию инициализации в этом .so файле, и там можно было зарегистрировать функции, доступные извне модуля, точно так же действует возврат функционального модуля, созданного в asmjs. Но я не могу понять, как эмулировать jquery.ready непосредственно с С++.
Как вы можете видеть, у меня мало знаний об asmjs, но я не нашел учебников или подобных для того, что я ищу, я прочитал ссылки на стандартные библиотеки, включенные во время компиляции для stdlibc, stdlibС++ и SDL, но нет ссылки на то, как манипулировать DOM из источника С++.