掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
首先介紹下aardio是什么?
其官方的表述是:aardio是專用于桌面軟件快速開發(fā)的新一代混合型編程語言 – 具有動態(tài)語言輕便、靈活的特性,而且又可以同時支持靜態(tài)類型開發(fā),象靜態(tài)語言那樣使用。aardio可以直接支持原生DLL,即使是外部EXE進程中的函數(shù),也可以使用一句代碼聲明為普通的aardio函數(shù)對象( 原生call支持 ),aardio支持非常多的標準調用約定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等調用約定都可以支持。
這玩意筆者之前還不知道是個啥,直到有一個項目做了一部分丟到我們微構網絡這邊,發(fā)現(xiàn)里面就用到了aardio。aardio在這個項目中的作用就是把網頁與本地硬件系統(tǒng)串聯(lián)起來了,如果在標準瀏覽器里面運行網頁是沒辦法直接調用硬件資源的。而通過這個aardio作為橋梁可以實現(xiàn)網頁與本地硬件通信,而對于網頁而言aardio這個時候可以理解為一個微型瀏覽器。對于技術實現(xiàn)方面,跟electron類似,可以用web開發(fā)技術實現(xiàn)桌面軟件開發(fā)。貌似還是個人開發(fā)者開發(fā)的。
aardio中應該是內置了electron,很多人可能會說electron就是非常知名的基于web技術開發(fā)桌面軟件的工具,為什么這個aardio作者還要多此一舉。我猜想他應該是精簡了其他的一些工具,比如基于原版electron開發(fā)的應用是比較大的,而基于aardio開發(fā)的應用最小幾百kb,如果一個小軟件1-2MB就行了。對于小型軟件可能這種工具就有優(yōu)勢了,這可能就是這個項目原來開發(fā)者為啥選用aardio的原因吧。
但在aardio下跟標準瀏覽器還是有區(qū)別的,目前接觸過的各類前端方法,在瀏覽器里面支持的它基本上也支持,然而它自己其實也擴充了一些js之類的東西。以至于在標準瀏覽器下能運行的js庫可能在aardio下卻運行不了。比如使用經典的jquery的網頁在里面運行就會報錯。
應該是其子擴展的一些js庫也使用了跟jquery庫一樣的$符號,其實其他的一些js庫也可能因為這個原因而跟jquery沖突,如知名的社區(qū)BBS軟件自己寫的common.js庫,其他的包括Google Web Toolkit等很多庫其實都用到了$符號。我們可以使用如下代碼實現(xiàn)兼容:
if (typeof module === ‘object’) {window.jQuery = window.$ = module.exports;};
相當于jquery的noConflict()方法。
而且,此代碼應該緊跟jquery庫的引用,否則在它前面引入的其他基于jquery的js庫也可能出現(xiàn)問題,比如如果放在layer.js后面就會報如下錯誤:
Uncaught TypeError: Cannot read property ‘extend’ of undefined
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流