我在我的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对象吗?
这似乎适用于我自己的代码,如果我这样做的话:
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
发布于 2016-03-20 01:01:17
我确实得到了一个jQuery对象,但是绑定的文件只有几kb,这表明jQuery没有绑定在其中。但是,当我在npm安装jquery -循环并要求从我的脚本中安装jquery-循环时,我会从jquery循环代码中得到一个JS错误,该代码的$是未定义的。奇怪的是,imo的循环脚本与我所做的完全一样,即var $=需要量(‘jQuery’),但其中$根本不是一个jQuery对象,而是一个空对象。为什么会这样呢?
如果页面上有多个jQuery,则必须添加一个全局变量:
var $ = jQuery;https://stackoverflow.com/questions/36108937
复制相似问题