我有一個骨幹項目,我使用require.js來模塊化代碼。在Backbone + Requirejs中使用墊片包含一個自定義Jquery插件
我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是我需要的,而不包括他們在我的意見使用的插件。目前,我必須將它們包括在任何使用它們的地方。對於exaample:
define([
'jquery',
'underscore',
'backbone',
'views/SimpleNamedObjectView',
'jquery.sprites',
'jquery.sprite_util',
], function($, _, Backbone, SimpleNamedObjectView){
"use strict";
有沒有一種方法,我可以訪問jquery.sprites和jquery.sprite_util不包括他們在每看法?它可以成爲main.js所有視圖的全局,以便我可以使用這些插件的功能,而不必將它們包含在所有視圖中? 例如這個。$ el.getSprites(); (其中getSprites是jquery.sprites的一種方法)
我同意你的意思。但是舉例來說,我已經下載了一個像Datepicker這樣的jquery插件,並且我希望它可以在我的應用程序中成爲全局的,因爲許多視圖都會使用該插件,難道你不認爲將它變成全局是個好主意嗎? – Sudo
不,因爲如果你不跟蹤每個模塊中的依賴關係,那麼如果你決定刪除它,你可能會破壞某些東西,或者當不再使用依賴關係時你可能不會。在任何情況下,它都可以在全球範圍內使用,但將來很難擴展您的應用程序(與其他新開發者,其他開發者以及未來的自己)。 –