0
我想編寫一個javascript/jquery插件,以便它足夠通用,可用於任何框架,如angularjs,backbonejs,ember等。我應該足夠通用,以便它應該使用指令,如果它與主幹一起使用時使用角度和主幹原生功能。如果是的話,有沒有可能有人指導我如何?如何編寫靈活和通用的JavaScript模塊或插件
我想編寫一個javascript/jquery插件,以便它足夠通用,可用於任何框架,如angularjs,backbonejs,ember等。我應該足夠通用,以便它應該使用指令,如果它與主幹一起使用時使用角度和主幹原生功能。如果是的話,有沒有可能有人指導我如何?如何編寫靈活和通用的JavaScript模塊或插件
我能想到的最自然的方式就是寫在香草JS中。這將使它在每個框架中都可以工作,而無需擔心。
如果你想繼續使用這條路線,我會使用驅動程序式的實現,將所有東西都管理到特定的驅動程序。您需要爲每個驅動程序定義所需的每種方法,然後將電話自動轉發給正確的驅動程序。
var myPlugin;
(function() {
myPlugin = function(framework) {
var me = {},
framework = framework || 'angular';
me.frameworks = {
angular: new AngularDriver,
backbone: new BackboneDriver,
ember: new EmberDriver
};
// Call a method framework-agnostically
me.fire = function(method, args) {
if (!me.frameworks.hasOwnProperty(framework)) {
console.log('Error: Framework not recognised.');
return;
}
if (!me.frameworks[framework].hasOwnProperty(method)) {
console.log('Error: Method not found in ' + framework + '.');
return;
}
me.frameworks[framework][method].apply(this, args);
}
return me;
}
function AngularDriver() {
var me = {};
me.test = function() {
console.log('Hello from the Angular Driver');
}
return me;
}
function BackboneDriver() {
var me = {};
me.test = function() {
console.log('Hello from the Backbone Driver');
}
return me;
}
function EmberDriver() {
var me = {};
me.test = function(arg) {
console.log('Hello from the ' + arg + ' Ember Driver');
}
return me;
}
})();
var instance = new myPlugin();
instance.fire('test');
instance = new myPlugin('ember');
instance.fire('test', ['best']);
這是完全可能的,有實現myPlugin.fire
功能稍微乾淨的方式,如果別人可以提高該位左右instance.fire('test', ['best'])
語法是有點清潔,隨時:-)
不知道是什麼你的插件是如何建議你如何使它成爲通用的? – BenjaminPaul 2014-09-22 10:50:47