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