使用 require.js 加载 textext.js 插件
Load textext.js plugin with require.js
我正在尝试加载 textext.js jquery plugin, with one of it's plugins, textext tags。在我的项目中,我使用 require.js 来加载所有脚本及其依赖项。
与其他脚本一样,我在我的 main.js
文件中使用填充程序配置:
main.js
require.config({
shin: {
jquery: {
exports: '$'
},
'textext': {
deps: ['jquery'],
exports: '$.fn.textext'
},
'textext_tags': {
deps: ['jquery', 'textext'],
}
},
paths: {
jquery: 'lib/jquery-min',
textext: 'lib/textext/textext.core',
textext_tags: 'lib/textext/textext.plugin.tags',
}
});
在我使用它的页面上,我这样称呼它:
文件-app.js
define([
'jquery',
'textext',
'textext_tags',
], function($, Textext, TextextTags) {
// do stuff
});
代码在 firefox 上加载并正常工作,但在 Chromium 上,有时(大约 2/3 的次数),在我第一次加载页面时,我收到以下错误,该错误已损坏页面的功能:
TypeError: Cannot set property 'TextExtTags' of undefined
#3 localhost/js/lib/textext/textext.plugin.tags.js:23:27
在文件 textext.plugins.tags.js
中,我们在第 23 行(失败行):
$.fn.textext.TextExtTags = TextExtTags;
所以,用 Firebug 检查它,我发现 Jquery 没有加载,所以 $
和 $.fn
是未定义的。
我的问题是:为什么这个 require.js 的模式与同一项目中的其他 jQuery 插件一起工作(比如 jquery cookie 和其他),而不是这个,一个jquery 插件及其子插件?
正如 Vishwanath 所说,只有从 "shin" 更改为 "shim" 才有效,如上所示:
require.config({
shim: {
jquery: {
exports: '$'
},
...
谢谢!
我正在尝试加载 textext.js jquery plugin, with one of it's plugins, textext tags。在我的项目中,我使用 require.js 来加载所有脚本及其依赖项。
与其他脚本一样,我在我的 main.js
文件中使用填充程序配置:
main.js
require.config({
shin: {
jquery: {
exports: '$'
},
'textext': {
deps: ['jquery'],
exports: '$.fn.textext'
},
'textext_tags': {
deps: ['jquery', 'textext'],
}
},
paths: {
jquery: 'lib/jquery-min',
textext: 'lib/textext/textext.core',
textext_tags: 'lib/textext/textext.plugin.tags',
}
});
在我使用它的页面上,我这样称呼它:
文件-app.js
define([
'jquery',
'textext',
'textext_tags',
], function($, Textext, TextextTags) {
// do stuff
});
代码在 firefox 上加载并正常工作,但在 Chromium 上,有时(大约 2/3 的次数),在我第一次加载页面时,我收到以下错误,该错误已损坏页面的功能:
TypeError: Cannot set property 'TextExtTags' of undefined
#3 localhost/js/lib/textext/textext.plugin.tags.js:23:27
在文件 textext.plugins.tags.js
中,我们在第 23 行(失败行):
$.fn.textext.TextExtTags = TextExtTags;
所以,用 Firebug 检查它,我发现 Jquery 没有加载,所以 $
和 $.fn
是未定义的。
我的问题是:为什么这个 require.js 的模式与同一项目中的其他 jQuery 插件一起工作(比如 jquery cookie 和其他),而不是这个,一个jquery 插件及其子插件?
正如 Vishwanath 所说,只有从 "shin" 更改为 "shim" 才有效,如上所示:
require.config({
shim: {
jquery: {
exports: '$'
},
...
谢谢!