NWJS Addon入坑後又爬出的故事:Addon異步回調JavaScript

前段探針NWJS走了一些彎路,但最終也算是達到了預研目的。

本想利用nw js開發一個桌面應用,但是這個應用又需要比較多的硬件控制能力,這就要利用Addon插件來保證nw與前後端Front-End雙向交互通暢。

nwjs通過JavaScript同步調用c++的過程,利用nodejs官網docs介紹的例子就可以保證能夠使用;但,對於c++異步回調JavaScript,nodejs官網docs上沒有明顯例子,後來才發現在Github上Nodejs源碼中有異步回調的例子,路徑在:"node/test/addons/async-hello-world" 。

網上大多數搜到nodejs C++異步回調JavaScript的例子都比較老舊,這也是這篇博客的主要目的。找異步回調例子可以在源碼中直接找,不必費周折看網上一些過時的信息,所以,我這裏也不列出任何的代碼和例子,只指明地方和路徑。

雖然用正向和反向調用的例子可以集成出來這個AddOn的骨架,後面走的最大一段彎路是在編譯的時候。

因爲是一步一步嘗試的關係,首先保證了在nodejs的情況下能夠編譯使用,但後來按照NWJS官網編譯說明,雖然可以編譯過Addon,但在異步回調的關鍵步驟persistent<function>.reset賦值時,nwjs卻崩潰。試了很多野路子,也開了issue諮詢nwjs的維護開發人員,後來才逐漸發現,雖同是編譯相同代碼的AddOn,但在nodejs和nwjs編譯Addon時用到的頭文件和依賴鏈接node.Lib等是大大不同的,nwjs是通過比較大量的hack chromium V8和nodejs,所以,鏈接庫的不同是必然,在nodejs下能使用AddOn,但在nwjs下會崩潰,算是入坑後爬了坑出來。

補充一下:《Linker And Loader》這本書不錯,會明白編碼之後的程序故事。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章