最近开始尝试用Electron来写一个WebApp的桌面版应用,本以为直接把web页面搬进去就能得到不错的效果,结果后台一看各种jQuery未定义啊$未定义啊什么的

百度了半天什么也没找到(有线网出墙困难只能暂时百度),狠心烧流量上Google,第一个搜索结果就解决掉了= =

百度这个辣鸡一点也不好吃→_→


下面是解决方法:

方法一:用require引入

window.$ = window.jQuery = require(__dirname+'/js/jquery.js');

方便易用,其他有些脚本也得这样引入,比如Dropzone.js:

window.Dropzone = require(__dirname+'/js/dropzone.js');

方法二:直接对script标签做手脚

其实很简单,在script标签里用一条onload做一点小hack即可,比如:

<script src="js/jquery.min.js" onload="window.$ = window.jQuery = module.exports;"></script>

原因在于Electron自带module函数,而jQuery又尝试注册一个名为module的全局函数,最终导致jQuery无法被调用。

但是这样几乎所有的使用jQuery来注册全局函数的插件都要这么来一遍,不大方便

总之Electron有时比较蛋疼,但是从网页到桌面应用总之有些区别的,所以需要适应

如果不想用Electron的话可以试试NW.js,虽然据说bug也不少,而且很多人是从NW.js切换到Electron的。。。但是NW.js至少没有jQuery的BUG!!!

本文章由经典老宋创作,转载请注明来源:C次元