我目前正在开发一个相当复杂的jQuery插件。一个我设计的可扩展的。我的困惑是如何准确地向用户提供可用的API。jQuery插件 - 提供API
有两种方法,我可以想出:
提供通过对象的API在全球范围内
这是我目前使用的方法。我这样做是与此类似:
(function ($, win, undefined) { //main plugin functionality function pluginStuff() { /*...including method calling logic...*/ } //register function with jQuery $.fn.extend({ Plugin: pluginStuff }); //register global API variable win.PluginAPI = { extendMe: {}, getVar: function() {} }; })(jQuery, window);
不幸的是,因为我impliment标准
$().plugin('method')
架构其有点陌生,不得不使用一些事情jQuery的方法和对他人的API变量。提供经由放置在jQuery的
对象本人用这种方法玩弄以及,但其最好的做法API来仅占据在jQueries
fn
范围的单个槽,不人群jQuery的变量。在这种方法中,我会把我的API变量的$.fn
代替window
://register function with jQuery $.fn.extend({ Plugin: pluginStuff }); //register global API variable $.fn.PluginAPI = { extendMe: {}, getVar: function() {} };
我宁可不要打破了这个惯例,并采取了两个地方。
现在,我写这篇文章,我可以看到我给你我的插件插槽jQuery的fn
范围第三种选择是一个对象:
$.fn.Plugin = { plugin: pluginStuff, api: { extendMe: {}, getVar: function() {} } };
但如何好评会变成这样如果用户必须执行$('#elm').Plugin.plugin({ setting: 'value' })
才能创建插件的新实例?
任何帮助或指针将大大赞赏。
请注意:我不是在寻找一种方法将API对象合并到我的插件功能中。我正在寻找一种方法来保持它单独模块化,但直观地可用于使用/扩展。
你读过jQuery插件创作指南吗?这个想法是将字符串或字符串/对象传递给插件,并让它找出使用哪种内部方法。 http://docs.jquery.com/Plugins/Authoring#Plugin_Methods – Mathletics 2011-12-21 21:23:31
我不是在谈论运行内部方法,正如我在我的帖子中说的'我暗示了标准的$()。plugin('method')体系结构'我我在谈论一个人们可以添加'插件'的对象,这个插件可以与我自己的插件一起工作。该对象还包含实用功能,可用于扩展我的插件。我可以做一些像'$('#elm')。Plugin('extend',{...});'但我不确定,这就是为什么我在这里要求SO的经验。 – Chad 2011-12-21 21:27:15