使用Browserify与jQuery

8

我正在尝试使用jquery-browserify模块将jQuery与browserify一起使用。我在client.js脚本中按如下方式引入了该模块:

    var $ = require('jquery-browserify');

当我运行我的节点服务器时,在运行了Browserify之后,我遇到了“window未定义”的错误。我做错了什么?

1
你是想在 Node 中使用它而不是在浏览器中使用,对吗? - Jamund Ferguson
2
Browserify 应该在浏览器中使用。 - Ilan Biala
也许你需要传递一个窗口对象的引用:var $ = require('jquery-browserify')(window); - Kokodoko
尝试本地安装jQuery,使用命令“npm install jquery --save-dev”,并使用“var $ = require('jquery');”代替“jquery-browserify”。 - Garci García
3个回答

5

自2.1.0版本起,jQuery已符合CommonJS标准。


这是很久以前的事情了,我不指望会有回复,但无论如何。这是怎么回事?我从npm上拿到了jQuery 2.10模块,但是当我创建一个模块并使用browserify传递它时,我不能在那个模块中使用jquery。我看到很多评论说它符合commonJS规范,但没有关于如何使用它的内容。 - eignhpants
有趣,你能在GitHub上发布一个例子吗?我发现var $ = require('jquery')效果不错。 - Chris

4

Browserify可以处理CommonJS模块和AMD模块,使用deamdify转换器,因此现在不需要使用shim了。

需要明确的是,我只注意到JQuery 2.0.0支持AMD。


2
很遗憾,这个问题是在2012年提出的。这也许是为什么他们做出那些东西的原因。 - Claudia

2

2.1.0 版本之前,jQuery 不符合 CommonJS 标准,也就是说它没有通过 module.exports = $ 导出自己。

因此,你需要通过 browserify-shim 进行适配。

browserify-shim 可以动态适配任何版本的 jQuery 或者其他非 CommonJS 的库(比如 Zepto)。 具体配置方法请参见 readme。

另外,你也可以使用 jquery-browserify 作为替代方案,但这样会限制你使用其对应的 jQuery 版本。


14
从2.1.0版本开始,它符合CommonJS规范。 - Ilan Biala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接