Javascript 如何在CommonJS模块配置中设置主干.$?

Javascript 如何在CommonJS模块配置中设置主干.$?,javascript,backbone.js,Javascript,Backbone.js,我正在浏览从下面复制的Backbone.js源代码 在CommonJS/node.js配置中,node.js或CommonJS会显示Next。jQuery可能不需要作为一个模块。并调用工厂(root,exports,_),jQuery的第四个$参数未定义。在工厂函数中,它是主干。$=$所以主干。$将是未定义的?那么很多东西(AJAX,$el包装等)不会坏掉吗 使用jQuery的主要原因是处理DOM操作,而这在后端(nodejs)中是无用的,因此无需将其作为依赖项加载。要解决此问题,可以创建一个简

我正在浏览从下面复制的Backbone.js源代码


在CommonJS/node.js配置中,node.js或CommonJS会显示
Next。jQuery可能不需要作为一个模块。
并调用
工厂(root,exports,_)
,jQuery的第四个
$
参数未定义。在工厂函数中,它是
主干。$=$
所以
主干。$
将是未定义的?那么很多东西(AJAX,
$el
包装等)不会坏掉吗

使用jQuery的主要原因是处理DOM操作,而这在后端(nodejs)中是无用的,因此无需将其作为依赖项加载。要解决此问题,可以创建一个简单的模块,使用jQuery返回BackboneJS

// libs/backbone.js
var backbone = require("backbone");
backbone.$ = require("jquery");
module.exports = backbone;

是的,很多东西坏了。要解决这个问题,您必须使用
主干。$=require(“jquery”)
@Peruggia为什么它不只是在内部这么做(它在AMD配置中使用了
jquery
dep)?这就是为什么在AMD配置中,您可以将
jquery
定义为您正在使用的任何类似jquery的库,但对于CommonJS模块,您需要
jquery.js
?这不是完全正确的,或者完全是主观的。Backbone.Model还使用
$.ajax
,这对于
.save
.fetch
等都是必不可少的。。等等。这与DOM操作无关。
// libs/backbone.js
var backbone = require("backbone");
backbone.$ = require("jquery");
module.exports = backbone;