1

在网上找不到一个很好的例子,所以我正在尝试更新我的插件以支持 AMD。我在令人兴奋的插件模板中添加了一些代码,但我不确定这是否正确。

有关将此添加到插件的任何信息都会很好(我仍在学习)

那么这是使用 AMD 支持的好方法吗?

;(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['jquery'], factory);
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function($, window, document, undefined){

    //"use strict"; // jshint ;_;

    var pluginName = 'coolPlugin';

    function Plugin(element, options){

        this.obj = $(element);
        this.o   = $.extend({}, $.fn[pluginName].defaults, options);

        this.init();
    };

    Plugin.prototype = {

        init: function(){

            var self = this;

        },

        _private: function(param){ 
            var self = this;
        },

        destroy: function(){
            $.removeData(this.obj, this.pluginName);        
        }

    };

    $.fn[pluginName] = function(option, param) {
        return this.each(function() {
            var $this   = $(this);
            var data    = $this.data(pluginName);
            var options = typeof option == 'object' && option;
            if (!data){ 
              $this.data(pluginName, (data = new Plugin(this, options)))
            }
            if (typeof option == 'string'){
                 data[option](param);
            }
        });
    };

    $.fn[pluginName].defaults = {
        option1: 'helloooo'

    };


})(jQuery, window, document));
4

1 回答 1

1

有几种方法可以做到这一点,但我想说你的示例代码很到位。我要做的唯一区别是不使用init方法,而只是简单地使用插件构造函数。

如果你想要另一个例子,我在这个 jquery 插件中使用了 AMD 。

于 2013-10-06T10:35:43.670 回答