gpt4 book ai didi

requirejs - Require.js + SignalR

转载 作者:行者123 更新时间:2023-12-04 18:47:45 24 4
gpt4 key购买 nike

在过去的几天里,我一直在使用 Require.JS 和 SignalR,我注意到当我加载我的网站时,尽管我的 require.js 配置似乎是正确的,但有时 SignalR/Hubs 似乎在 jquery 之前加载。

这是我的配置:

require.config({
paths: {
jQuery: 'libs/jquery/jquery',
Underscore: 'libs/underscore/underscore',
Backbone: 'libs/backbone/backbone',
Marionette: 'libs/backbone/backbone.marionette'
}
});

require([
'app',
'order!libs/jquery/jquery-min',
'order!libs/jQueryUI/jquery-ui-1.8.11.min',
'order!libs/jqGrid/grid.locale-en',
'order!libs/jqGrid/jquery.jqGrid.min',
'order!libs/underscore/underscore-min',
'order!libs/backbone/backbone-min',
'order!Marionette',
'order!libs/jquery.signalR-0.5.1',
'order!noext!signalr/hubs'
], function (app) {
app.initialize();
});

当这失败时,我在集线器文件的第 16 行收到错误消息。它说 uncaught TypeError: Cannot read property 'signalR' of undefined .

升级到 V2 并修改了我的配置。
var fRequire = require.config({
paths: {
jQuery: 'libs/jquery/jquery',
Underscore: 'libs/underscore/underscore',
Backbone: 'libs/backbone/backbone',
Marionette: 'libs/backbone/backbone.marionette',
sigr: 'libs/jquery.signalR-0.5.1'
},
shims: {
"libs/jquery.signalR-0.5.1": {
deps: ["jQuery"]
},
"libs/jqGrid/jquery.jqGrid.min": {
deps: ["jQuery"]
},
"libs/jquery/jquery-ui-1.8.19.min": {
deps: ["jQuery"]
},
"libs/jqGrid/grid.locale-en": {
deps: ["jQuery"]
},
"noext!signalr/hubs": {
deps: ["sigr"]
}
}
});

fRequire([
'app'
], function (app) {
app.initialize();
});

现在 require 正在寻找 jquery、下划线等的错误位置......尽管我特别告诉它在哪里查找。当我使用 v1.x 配置 require 时,这可能与我遵循旧教程有关。

http://backbonetutorials.com/organizing-backbone-using-modules/

最终更新:

这是我的工作配置。希望它能帮助像我这样的新手通过这个问题。
require.config({
baseUrl: '/js',
paths: {
"jquery": 'libs/jquery/jquery-min',
"underscore": 'libs/underscore/underscore-min',
"backbone": 'libs/backbone/backbone-min',
"marionette": 'libs/backbone/backbone.marionette',
"sigr": 'libs/jquery.signalR-0.5.1'
},
shims: {
"backbone": {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
"underscore": {
deps: ["jquery"]
},
"marionette": {
deps: ["backbone", "jquery"]
},
"sigr": {
deps: ["jquery"]
},
"libs/jqGrid/jquery.jqGrid.min": {
deps: ["jquery"]
},
"libs/jquery/jquery-ui-1.8.19.min": {
deps: ["jquery"]
},
"libs/jqGrid/grid.locale-en": {
deps: ["jquery"]
},
"noext!signalr/hubs": {
deps: ["sigr"]
}
}
});

// for future ref, I loaded jquery here because app.js references sigr which requires it.
// without enabling it before the module is loaded sigr would complain jquery was not enabled.
require([
'libs/domReady',
'app',
'jquery'
], function (domReady, app, $) {
domReady(function () {
app.initialize();
});
});

我必须在函数(domready、app、$)中加载 jquery。如果不这样做,将导致信号器报告无法找到它。

最佳答案

如果您使用的是 requirejs 2.x,则可以使用“shims”配置属性。在那里您可以指定不符合 AMD 标准的文件之间的依赖关系,例如 jquery、jqueryui 等。

以您的配置为例:

require.config({ 
paths: {
jQuery: 'libs/jquery/jquery',
Underscore: 'libs/underscore/underscore',
Backbone: 'libs/backbone/backbone',
Marionette: 'libs/backbone/backbone.marionette'
},
// specify depedencies
shim: {
"libs/jquery.signalR-0.5.1" : {
deps: ["jQuery"]
},
"libs/jqGrid/jquery.jqGrid.min" : {
deps: ["jQuery"]
}
}
});

此外,在“垫片”中配置依赖项消除了“顺序!”的使用。插入。

提示:使用“路径”为您的系统使用的 api 设置一个友好名称,因此当发布该 api 的新版本时,您只需更改“路径”即可。

关于requirejs - Require.js + SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com