这里有一些我收集正理的简单建议,可以帮助开发者们写出真正的卓越插件,(而不是只有华丽的展现,幕后代码实现很糟糕的插件)。有些建议在当前的插件里效果体现的不是很明显,但是他们不仅仅是帮助你们开发Jquery插件,也能对你们将来维护拓展大有益处。
同样值得注意的是,你有一个良好的代码结构和方针,会加快插件的开发速度,因此有必要花费一些时间来思考如何开始你的项目。你会知道,以后只需要编写插件的核心代码而不用担心任何其他的细节。
非常罕见的,你的插件包含绝对不需要配置的设置。接着第一条建议,你应该总是尽量找多更多的配置项,并且非他们提供默认值。这将会增加开发会使用你的插件的机会,增加开发者们传播关于你插件的消息。
var defaultSettings = {
mode : 'Pencil',
lineWidthMin : '0',
lineWidthMax : '10',
lineWidth : '2'
};
settings = $.extend({}, defaultSettings, settings || {});
上面的代码是一个标准的方法。可以设置你的默认值,并且继承开发者们传进来的任何配置。
3. 保持所有的命名唯一性。
当你开发你的插件的时候,你应该始终留心保持任何一个插件里的索引的唯一性。这包括使用的css类,id,插件本身的名字等。这条建议绝对不需要耗费你更多的精力,并且能帮你避免和现有javaScript代码和css代码的冲突。
$("#container").tooltip(); //bad
$("#container").wTooltip(); //good
上面的例子中,我们通过给插件添加了一个前缀字母“w”,来保持我们插件名字的唯一性,来区别其他可能已经存在的命名,在css代码里我也保持命名的唯一性,确保和通用术语,例如:tab,holder等包含的关键字的唯一性。
_wPaint_button
_wPaint_holder
我也喜欢通过添加下划线来确保id和css类class没有冲突的机会,给我更多的信心我的jquery插件将会成功。
4. 让你的插件结构化。(The Standard Plugin Layout in a Nutshell)
这是一个非常漂亮的标准jquery代码块,你会在很多优秀的插件里看见它,它包含开发、维护、更新等你需要的重要部分。有一个结构化的代码,将会节省你很多猜测代码的时间,让你将精力集中在开发上。你可以看一下我开发的Jquery tooltip 插件,一个让它们更好的一起工作的主意的一个代码框架。
var defaultSettings = {
//settings
};
$.fn.wPaint = function(settings)
{
//check for setters/getters
return this.each(function()
{
var elem = $(this);
//run some code here
elem.data("_wPaint", wPaint);
}
//classes/prototyping
}
这里有几个关键点:
1. 默认配置放在插件代码的外面,它不需要每次都实例化。
2. Setters和getters方法不是总是必须的 但是应该在每次循环之前做一次检查。(jquery里有很多setter和getter方法 例如val(),width(),hieght(),html(),等方法都是,在提供参数的时候,会赋值才做,没有参数的时候会返回值.)
3. 返回每一个元素是不要破环jquery下面的方法链
4. 保存元素的数据的时候用 .data(),我们可能在后面会需要它。
5. 最后的任何的Classes/Prototypes的步骤,放在循环结束后的外面。
5. 保持你的代码有组织性。
尽管这条建议我看起来很明显,但是我见过太多的插件的组织性很怪异糟糕。一个好主意就是让你文件有一个简单的如下的结构,好的文件结构本身就是一种说明。
./images/
./includes/
./themes/
./wPaint.js
./wPaint.min.js
./wPaint.css
./wPaint.min.css
这是一个非常清晰的组织,包含哪些文件,其他插件的文件或者jquery库文件等可以很方便的查看它们。
6.使用原型(use class prototype)
这在js脚本编程里面,已经是一个很大的话题了,所以在这里我就简略的提及一下。主要有两大原因让你在编程时使用原型。
1. 不必为每一个方法都实例化一个复本,这样带来更高的效率和运行速度。
2. 因为每一个对象的方法只是索引原型,而不是为每一个对象的方法制造一个复本,从而节省了大量的内存。
function Canvas(settings)
{
this.canvas = null;
this.ctx = null;
}
Canvas.prototype =
{
generate: function()
{
//generate code
}
}
使用原型同样可以是你的代码更规范化、有组织性,更能增强复用性。在上面的例子中,Canvas对象在实例化的时候,仅仅只是把每一个原型索引到实例化对象中。
7.提供getter和setter方法
虽然提供getter和setter方法不是必须的,但是我发现为需要他们的开发者提供他们,是一个很好的选择。这里我们所做的是房插件被调用之后,可以被修改。大体操作步骤如下:
if(typeof option === 'object'){
settings = option;
}else if(typeof option === 'string'){
if(
this.data('_wPaint_canvas') &&
defaultSettings[option] !== undefined
){
var canvas = this.data('_wPaint_canvas');
if(settings){
canvas.settings[option] = settings;
return true;
}else{
return canvas.settings[option];
}
}else return false;
}
在这里我们所做的是检查是否是一个set操作,而不是一些配置信息。如果提供了两个参数,意味着我们正在执行set操作,如果提供一个参数,意味着我们正在索取执行的选项信息。(这段可能翻译的不是很好,自己也蒙蒙的,感觉作者在这里举的例子不是很合适,jquery很多setter和getter方法,例如:val(),width(),height()。css(“”someting“)等,都是提供参数就是setter,不提供就是getter。)
8.在所有浏览器中测试你的插件。
在所有的浏览器中测试关系到你的插件的生死存亡,一些开发者们可能会不在乎自己插件的一些小bug,但是如果代码有很多bug,插件的使用者们肯定会很快把插件替换掉。举个例子,在的插件
jQuery Color Picker Plugin里面,我发现一些bug,竟然导致我的插件不能在ie7下使用,它只需要很简单的一个修正,ie7开始,不支持浮动元素以“inline-block”方式显示。
当你感觉插件完成想要运行的时候,一个很让人烦恼的事情。确保你能坚持住,多花费一天的时间在尽可能多的场景下测试你的插件,这不仅仅是修复一些简单的bug,同时也是一种提高于完善。
9.发布的时候记得打包。
如果你的代码已经完善,就绪,准备发布,那么请话费一些时间做下面这简单的三个步骤.
1. 对核心分部写一些说明文档,不止是为了别的开发者,你自己将来也会需要他.
2.为你的插件指定版本,文件命,或者文档里都可以.在那里无所谓,只能开发者们能知道他们在使用哪个版本,一般以后更新.
3. 最后提供一个你代码的压缩版,这仅仅只是话费几分钟的时间,加上它,开发者们使用的时候会更高兴,会有更多的回头客.
最后开发者们决定用不用你的插件的时候,有时候这些简单的步骤,真的会改变你的插件,所以确保让开发者们使用你的插件的时候尽量的高兴.
10.上传你的插件.
网上有很多可以使用的服务, 我倾向于Gitub和google code,(译者当然是csdn了)
你不一定上传插件总是为了公共使用,特别是在一个内部的项目使用中,请确保他们都在各自的代码库里面,不要让他们的版本混淆.这将确保你的插件能在正确的文档和版本里维护.
如果你的插件正的需要公共发布,我还是建议我上面提到的Gitub和google code,他们提供的发行报告,访问统计,下载统计是很好的.这让你可以和用户互动,你可以通过查看总下载量来估计你的插件的干的如何,这些服务是安装步骤非常简单,提供了很多参考设置.
结束语:
这些建议全部覆盖了影响你的jquery插件生命周期的核心内容,
它(指上面的10条建议)也提供了一些开发者们通常使用的标准代码格式可以借鉴,无论你开发插件是为了兴趣更多还是专业更多,它会让你的插件在使用的时候更让人觉得满意.
原文连接:http://www.queness.com/post/10828/10-tips-for-writing-awesome-jquery-plugins
说明一下:
我知道翻译的很烂,希望大家不要喷,我的目的是大家一起学习一起进步,我在学习英语,也在做jquery开发.所以说翻译一些这样的文章对我是很有好处的.
翻译不对的地方希望大家能指正.
相关推荐
【超酷的日程安排Jquery插件】是一个用于前端日程管理的高效工具,它以其丰富的功能和灵活的展示方式,使得用户可以便捷地规划和管理个人或团队的日程。这款插件支持三种不同的查看模式:日视图、周视图和月视图,为...
这个文件包含了jQuery插件的代码,它会监听用户与图片的交互,如鼠标移动。当鼠标移到图片上时,插件会计算鼠标的相对位置,并动态改变放大镜区域内的图片源(通常是那个隐藏的大图),以显示对应位置的放大细节。...
在实际开发中,我们还可以利用jQuery的插件系统,例如使用`jQuery UI`库中的`dialog`组件,它可以轻松实现弹出窗体的各种功能,并且提供了丰富的主题和自定义选项。此外,配合CSS3的新特性,如Flexbox或Grid布局,...
本文将深入探讨一款基于jQuery和CSS3的超酷二级下拉菜单特效插件,这款插件能够为您的网站增添动态效果,提升用户界面的吸引力。 首先,jQuery是一个轻量级的JavaScript库,它简化了JavaScript的DOM操作、事件处理...
【colorfulTab】是一款出色的jQuery插件,专为创建炫酷多彩的选项卡设计而设计。这个插件以其丰富的色彩方案和多样的功能,为网页界面添加了视觉吸引力和交互性,使得用户在浏览信息时体验更加友好。下面将详细探讨...
`hover3d.js`这款jQuery插件正是为了增强用户体验而设计的,它为图片展示带来了独特的3D卡片效果。当用户鼠标悬停在图片上时,图片会呈现出3D倾斜和旋转的效果,使得原本静止的图像生动起来,为浏览者提供一种视觉上...
通过引入jQuery库,开发者可以利用其简洁的API来编写高效、易于维护的代码。 在"超酷的jQuery鼠标滑过爆炸特效.zip"文件中,"说明.htm"可能包含有关如何使用这个特效的详细步骤和示例代码。通常,它会解释如何在...
**jQuery和CSS3超酷3D立方体轮播图插件详解** 在现代网页设计中,动态效果和交互性已经成为提升用户体验的重要手段。jQuery作为一款广泛使用的JavaScript库,以其简洁的API和强大的功能,简化了JavaScript编程。CSS...
【jQuery和CSS3超酷3D堆叠式幻灯片插件】 在现代网页设计中,动态效果和交互性已经成为提升用户体验的重要元素。jQuery和CSS3作为两种强大的技术,经常被用于实现各种复杂的动画和过渡效果。在这个"jQuery和CSS3...
"超酷jQuery水波倒影特效插件特效代码"是指利用jQuery来实现一种创新的视觉效果,即水波倒影。这个特效能够给网页中的图像添加动态的、逼真的水波荡漾及倒影效果,极大地提升了用户体验和网页的视觉吸引力。 首先,...
《jQuery超酷相册相框效果详解》 在网页设计中,相册和相框效果是展示图片的重要手段,能够提升用户体验,使网站更具吸引力。jQuery作为一种强大的JavaScript库,为实现这种超酷的相册相框效果提供了丰富的功能和...
本篇文章将详细讲解标题为"超酷的jQuery选项卡特效"的相关知识点,以及如何利用jQuery实现这些效果。 一、jQuery选项卡基础 1. **jQuery选择器**:jQuery的核心功能之一就是选择器,它允许我们根据元素的ID、类、...
记得在插件设计时遵循jQuery插件的最佳实践,确保良好的可配置性和可扩展性。 总结,通过jQuery和CSS3,我们可以实现超酷的select选择下拉框美化特效,提供更优秀的用户体验。从HTML结构的构建,到jQuery事件处理和...
`视频教程大全.url`、`电子书大全.url`、`原创Jquery插件大全.url`则是关于jQuery学习资源的链接,可以帮助你进一步提升技能。`css`和`js`文件夹可能分别包含了样式表和JavaScript代码,用于实现时间轴特效。 总之...
该插件完全用JavaScript编写,无需依赖任何外部库,如jQuery,尽管在标签中提到了jQuery库,但实际使用中并不需要。这使得notice.js能在各种环境中轻松集成,特别是对于那些希望避免过多第三方库引入的开发者来说,...
**jQuery超酷圆形气泡导航菜单特效**是一种创新的网页交互设计,主要依赖于JavaScript库jQuery来实现。这种特效能够提升用户体验,使用户在浏览网站时更加便捷地访问二级或三级菜单内容。以下是对这个特效及其相关...
3. **Jquery插件**:可以使用第三方Jquery插件如`masonry`或自己编写函数来处理元素的布局。当页面加载或窗口尺寸改变时,计算每个时间轴项的高度和位置,实现自适应布局。 4. **动态加载**:如果时间轴项数量过多...
此外,为了提高代码的可维护性和复用性,我们可以将这个动画效果封装成一个jQuery插件。这样,只需在其他项目中引入这个插件,就可以轻松地应用相同的效果。创建插件通常包括定义一个函数,接收参数(如文本内容、...
在给定的压缩包文件中,我们关注的是一个基于Bootstrap的jQuery超酷hero幻灯片特效,名为"bpHS"。 这个插件是专门为了创建吸引人的幻灯片展示而设计的,尤其适用于首页或产品展示区域,以增强用户体验和网站的视觉...
`js`文件夹包含了项目的JavaScript代码,可能包括自定义的jQuery插件;`css`文件夹存储了实现3D旋转效果的CSS样式;`img`文件夹可能包含任何必要的背景图像或其他图形资源。 总之,“jQuery和CSS3超酷顶部隐藏菜单...