gpt4 book ai didi

jquery - 使用 shim 在 Backbone + Requirejs 中包含自定义 Jquery 插件

转载 作者:行者123 更新时间:2023-12-01 01:16:23 25 4
gpt4 key购买 nike

我有一个主干项目,我正在使用 require.js 来模块化代码。

我的 main.js 看起来像这样:

require.config({
paths:{
jquery:'../../../../core/js/external/jquery/jquery-1.8.2',
underscore:'../../../../core/js/external/underscore/underscore',
backbone:'../../../../core/js/external/backbone/backbone',
text:'../../../../core/js/external/require/text',
backbone_paginate:'../../../../core/js/external/backbone/backbone.pagination',
'jquery.sprites':'../../../../core/js/sprites',
'jquery.sprite_util':'../../../../core/js/util/spriteUtil'


},
shim:{
'backbone':{
deps:['underscore', 'jquery'],
exports:'Backbone'
},
'underscore':{
exports:'_'
},
'jquery.blades':{
deps:['jquery']
},

'jquery.sprites':{
deps:['jquery']
},
'jquery.sprite_util':{
deps:['jquery.sprites']
}
}
}
});
require(['../app'], function (AppView) {
"use strict";
new AppView();
});

所以,这里的 jquery.sprites 和 jquery.utils 是我需要使用的插件,而不将它们包含在我的 View 中。目前我必须将它们包含在任何使用它们的地方。例如:

define([
'jquery',
'underscore',
'backbone',
'views/SimpleNamedObjectView',
'jquery.sprites',
'jquery.sprite_util',


], function($, _, Backbone, SimpleNamedObjectView){
"use strict";

有没有一种方法可以访问 jquery.sprites 和 jquery.sprite_util 而无需将它们包含在每个 View 中?它可以成为 main.js 中所有 View 的全局变量,以便我可以使用这些插件的功能而不将它们包含在所有 View 中吗?例如 this.$el.getSprites(); (其中getSprites是jquery.sprites的一个方法)

最佳答案

一旦它们被加载,由于它们被“填充”,它们将在全局范围内可用。

因此,您可以在 main.js 内的引导 require 调用中将它们作为依赖项调用。这会起作用。

但是!这完全违背了 Require.js 和 AMD 的理念。每个模块都应该声明它们的所有依赖项,以便它们都可以单独加载并按原样工作。这也将使单元测试变得更加容易。

所以,是的,你可以,但你真的不应该这样做

关于jquery - 使用 shim 在 Backbone + Requirejs 中包含自定义 Jquery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981315/

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