jQuery教程之Electron对jQuery的支持
沉沙 2019-06-12 来源 : 阅读 1515 评论 0

摘要:本篇文章探讨了jQuery教程之Electron对jQuery的支持,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了jQuery教程之Electron对jQuery的支持,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

jQuery教程之Electron对jQuery的支持

<

最近在了解Electron框架写应用,偶然发现在html中使用<script src="./jquery.js"></script>这种方式引入JQuery,明明引入了,程序中却始终报错显示:Uncaught ReferenceError: $ is not defined。
经查阅资料,发现不仅JQuery不能用,RequireJS、Meteor、AngularJS也不能使用。
        原因是Electron 在运行环境中引入了 Node.js,默认启用了Node.js的require模块,而这些框架为了支持commondJS标准,当Window中存在require时,会启用模块引入的方式。所以在 DOM 中有一些额外的变量,比如module、exports和require。这导致了许多库不能正常运行,因为它们也需要将同名的变量加入运行环境中。
解决方法有很多,官方的解决方法是1、2:
        1、禁用Node.js:若不使用Node.js则通过在主进程中禁用Node.js来解决。
        // 在主进程中
        var mainWindow = new BrowserWindow({
            webPreferences: {
                nodeIntegration: false
            }
        });
        2、变量重命名:假如依然需要使用 Node.js 和 Electron 提供的 API,则需要在引入那些库之前将这些变量重命名。
        <head>
            <script>
                // 重命名 Electron 提供的 require
                window.nodeRequire = require;
                delete window.require;
                delete window.exports;
                delete window.module;
            </script>
            <script type="text/javascript" src="jquery.js"></script>
        </head>
        这样,就可以用nodeRequire来使用node模块,又能使用jQUery了,但这种方法不适合web项目,在web里将无法正常浏览。
        3、采用Node.js的require引入:(有些时候不要带后缀名.js)
        <script>window.$ = window.jQuery = require("./js/jquery.min");</script>
        4、自定义$、jQuery变量
        <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
        <script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>
        5、
        <!-- Insert this line above script imports  -->
        <script>if (typeof module === 'object') {window.module = module;module = undefined;}</script>
        <!-- normal script imports etc  -->
        <script src="scripts/jquery.min.js"></script>  
        <script src="scripts/vendor.js"></script>   
        <!-- Insert this line after script imports -->
        <script>if (window.module) module = window.module;</script>  
        6、去掉框架中的模块引入判断代码:针对JQuery
        将JQuery中的如何代码
        !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}
        改为
        !function(a,b){b(a)}
我个人还是比较喜欢使用第三种,简单代码少    

      本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程