首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Browserify与全局jQuery

Browserify与全局jQuery
EN

Stack Overflow用户
提问于 2016-03-20 00:31:29
回答 1查看 743关注 0票数 1

我在我的WordPress主题中使用了browserify。我遇到的问题是,我希望将jQuery包括为"WordPress way“(即wp_enqueue_script('jquery')),以便所有依赖于window.jQuery定义(并包含在<head>中)的WordPress插件都能继续工作。

我仅仅通过在我的jQuery中设置browserify(conf).ignore('jquery')就可以使浏览器化忽略Gulpfile.js需求,但是这会导致脚本试图包含jQuery --失败的“浏览器化方式”。

我如何才能拥有一个全局jQuery对象(在head中包含在它自己的<script>元素中),以便WP插件能够工作,并且仍然有能够运行var $ = require('jquery')的代码?有可能吗?

更新:我想我已经接近了一些。我现在把jQuery收录在<head>里了。我已经在我的浏览器化调用中设置了ignore('jquery'),以避免它也出现在我的捆绑文件中,并且我正在使用browserify-shim (这是我有点迷路的地方)(我认为呢?)这样,当您执行require('jquery')时,它会使用全局window.jQuery对象吗?

这似乎适用于我自己的代码,如果我这样做的话:

代码语言:javascript
复制
var foo = require('jquery');

console.dir(foo);

我确实得到了一个jQuery对象,但是绑定的文件只有几kb,这表明jQuery没有绑定在其中。但是,当我从我的脚本中要求使用npm install jquery-cycle时,我会从jquery循环代码中得到一个JS错误,该代码的$是未定义的。奇怪的是,imo是循环脚本完成了我所做的事情,也就是var $ = require('jquery'),但是在那里,$根本不是jQuery对象,而是一个空对象。为什么会这样呢?

更新2:由于某种原因,如果我将循环插件的require()更改为需要精确的JS文件,它就能工作。我把require('jquery-cycle') (基本上是说$ is undefined的错误)更改为require('../node_modules/jquery-cycle/index.js')

当然,我非常希望继续以“正常”的方式来要求。你知道为什么这不管用吗?

更新3:经过深入研究,我终于发现需要将global: true设置为transform()调用,以便依赖项也可以使用闪烁的jQuery。我终于在这里找到了这个解决方案:Shimming dependencies of dependencies with browserify-shim

EN

回答 1

Stack Overflow用户

发布于 2016-03-20 01:01:17

我确实得到了一个jQuery对象,但是绑定的文件只有几kb,这表明jQuery没有绑定在其中。但是,当我在npm安装jquery -循环并要求从我的脚本中安装jquery-循环时,我会从jquery循环代码中得到一个JS错误,该代码的$是未定义的。奇怪的是,imo的循环脚本与我所做的完全一样,即var $=需要量(‘jQuery’),但其中$根本不是一个jQuery对象,而是一个空对象。为什么会这样呢?

如果页面上有多个jQuery,则必须添加一个全局变量:

代码语言:javascript
复制
var $ = jQuery;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36108937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档