jQuery与aardio环境下内置js冲突问题的解决

2021-04-28 18:50 栏目:技术开发 查看(5448)

首先介绍下aardio是什么?

其官方的表述是:aardio是专用于桌面软件快速开发的新一代混合型编程语言 – 具有动态语言轻便、灵活的特性,而且又可以同时支持静态类型开发,象静态语言那样使用。aardio可以直接支持原生DLL,即使是外部EXE进程中的函数,也可以使用一句代码声明为普通的aardio函数对象( 原生call支持 ),aardio支持非常多的标准调用约定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等调用约定都可以支持。

这玩意笔者之前还不知道是个啥,直到有一个项目做了一部分丢到我们微构网络这边,发现里面就用到了aardio。aardio在这个项目中的作用就是把网页与本地硬件系统串联起来了,如果在标准浏览器里面运行网页是没办法直接调用硬件资源的。而通过这个aardio作为桥梁可以实现网页与本地硬件通信,而对于网页而言aardio这个时候可以理解为一个微型浏览器。对于技术实现方面,跟electron类似,可以用web开发技术实现桌面软件开发。貌似还是个人开发者开发的。

aardio中应该是内置了electron,很多人可能会说electron就是非常知名的基于web技术开发桌面软件的工具,为什么这个aardio作者还要多此一举。我猜想他应该是精简了其他的一些工具,比如基于原版electron开发的应用是比较大的,而基于aardio开发的应用最小几百kb,如果一个小软件1-2MB就行了。对于小型软件可能这种工具就有优势了,这可能就是这个项目原来开发者为啥选用aardio的原因吧。

但在aardio下跟标准浏览器还是有区别的,目前接触过的各类前端方法,在浏览器里面支持的它基本上也支持,然而它自己其实也扩充了一些js之类的东西。以至于在标准浏览器下能运行的js库可能在aardio下却运行不了。比如使用经典的jquery的网页在里面运行就会报错。

QQ截图20210428183501

应该是其子扩展的一些js库也使用了跟jquery库一样的$符号,其实其他的一些js库也可能因为这个原因而跟jquery冲突,如知名的社区BBS软件自己写的common.js库,其他的包括Google Web Toolkit等很多库其实都用到了$符号。我们可以使用如下代码实现兼容:

if (typeof module === ‘object’) {window.jQuery = window.$ = module.exports;};

相当于jquery的noConflict()方法。

而且,此代码应该紧跟jquery库的引用,否则在它前面引入的其他基于jquery的js库也可能出现问题,比如如果放在layer.js后面就会报如下错误:

Uncaught TypeError: Cannot read property ‘extend’ of undefined

QQ截图20210428184328

 

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:jQuery与aardio环境下内置js冲突问题的解决 - 微构网络
分享: