CommonJS - 如何将jquery和jquery-plugin组合到$ namespace中

Eva*_*ice 6 javascript jquery-plugins commonjs node.js

我正在尝试做的是调整我的jQuery插件以使用Node.js上的jQuery.

根据我的理解,CommonJS是最基本的形式,需要将一个库包装在一个闭包中,并且该闭包应该作为'exports'参数的参数提供.这样,代码整齐地包含在它自己的命名空间中(通过命名变量),并且不会污染全局命名空间.

jQuery本身应该属于'$'命名空间.

翼:

var $ = require(jquery);
Run Code Online (Sandbox Code Playgroud)

但我的插件也应该适合'$'命名空间.

插件代码:

(function( $ ) {
  // plugin code goes here
})(jquery);

exports.jquery = jquery // will this work?
Run Code Online (Sandbox Code Playgroud)

例如:

var $ = require(jquery);
$ = require(jquery-csv.js); // will this work?
Run Code Online (Sandbox Code Playgroud)

要在浏览器中工作,所有内容都设置为可以从'$'命名空间调用,即使我的模块设置为'$'的子命名空间(即'$ .csv').

是否有标准方法可以在单个命名空间上执行多个需求?如果没有,那么有一个可行的替代方案(在插件代码上做一个浅表复制)?

注意:匿名函数包装器遵循标准的jquery指南.

注意:此修复程序将应用于jquery-csv插件.

squ*_*ket 2

你的插件中应该需要 jQuery :

var $ = require("jquery");
Run Code Online (Sandbox Code Playgroud)

这也是UMD(通用模块定义)中的技术,它是 CommonJS 和 AMD 的标准。

另请参阅带有 UMD 的 jQuery 插件示例