添加在已经将jquery作为全局的页面上使用jquery的RequireJS模块
我有一个应用程序的附加组件(称为appX),允许用户使用javascript,css和appX的webservices api创建自己的自定义。
通常自定义很小,不涉及很多外部库/插件,但是当它们有外部库时,典型用户选择的库是jQuery。
在appX的下一个版本中,他们本身使用jQuery,我知道这将打破一些自定义。
所以我需要模块化这种情况。 我还有其他一些问题,而RequireJS似乎是解决这些问题的好方法。 我只需要弄清楚如何在这种情况下正确应用RequireJS
在我的POC中,我正在加载require.js,如下所示:
我们将调用jQuery加载appX jqueryx
和我要加载的jqueryp
(p为私有)
jQuery使用AMD,默认情况下在内部使用此定义:
define( "jquery", [], function () { return jQuery; } );
但是在这种情况下,在JQuery(jqueryx)之后加载RequireJS,所以没有默认的'jquery'
定义是正确的吗?
在我向你展示我的问题之前还有一些背景……文件结构是这样的:
appx /js: jqueryx.js other.js appx /custom/js: jqueryp.js dostuff.js
看看RequireJS api,似乎我应该这样做:
require.config({ baseUrl : 'custom/js', paths : { 'jquery' : 'jqueryp'}, map: { '*': { 'jquery': 'jquery-private' }, 'jquery-private': { 'jquery': 'jquery' } } }); define(['jquery'], function (jq) { return jq.noConflict( true ); }); require(['jquery'], function(jq){ console.log(jq.fn.jquery); });
但是当我这样做时,我收到一个错误:
Mismatched anonymous define() module: function (jq)...
我已经玩过切换对jquery
, jquery-private
引用,因为它有点令人困惑但没有进展。
我应该如何应用RequireJS来应对这种情况?
差不多一年了,但总比没有答案好……
应将以下部分移动到“jquery-private.js”文件中:
define(['jquery'], function (jq) { return jq.noConflict( true ); });
您无法在主入口点中定义模块。 即使你可以,该模块没有名称,所以你会如何引用它?