`

js插件开发

 
阅读更多
当我们画出了UI之后就可以正式编写jQuery插件代码了,不过在着之前我们还需要对jQuery插件开发的一些规范性有一些了解。

1. 使用闭包:
(function($) {
  // Code goes here
})(jQuery);

这是来自jQuery官方的插件开发规范要求,使用这种编写方式有什么好处呢?

a) 避免全局依赖。

b) 避免第三方破坏。

c) 兼容jQuery操作符'$'和'jQuery '

我们知道这段代码在被解析时会形同如下代码:
var jq = function($) {
  // Code goes here
};
jq(jQuery);

这样效果就一目了然了。

2. 扩展

jQuery提供了2个供用户扩展的‘基类’ - $.extend和$.fn.extend.

$.extend 用于扩展自身方法,如$.ajax, $.getJSON等,$.fn.extend则是用于扩展jQuery类,包括方法和对jQuery对象的操作。为了保持jQuery的完整性,我比较 趋向于使用$.fn.extend进行插件开发而尽量少使用$.extend.

3. 选择器

jQuery提供了功能强大,并兼容多种css版本的选择器,不过发现很多同学在使用选择器时并未注重效率的问题。

a) 尽量使用Id选择器,jQuery的选择器使用的API都是基于getElementById或getElementsByTagName,因此可以知道 效率最高的是Id选择器,因为jQuery会直接调用getElementById去获取dom,而通过样式选择器获取jQuery对象时往往会使用 getElementsByTagName去获取然后筛选。

b) 样式选择器应该尽量明确指定tagName, 如果开发人员使用样式选择器来获取dom,且这些dom属于同一类型,例如获取所有className为jquery的div,那么我们应该使用的写法 是$('div.jquery')而不是$('.jquery'),这样写的好处非常明显,在获取dom时jQuery会获取div然后进行筛选,而不是 获取所有dom再筛选。

c) 避免迭代,很多同学在使用jQuery获取指定上下文中的dom时喜欢使用迭代方式,如$('.jquery .child'),获取className为jquery的dom下的所有className为child的节点,其实这样编写代码付出的代价是非常大 的,jQuery会不断的进行深层遍历来获取需要的元素,即使确实需要,我们也应该使用诸如$(selector,context), $('selector1>selector2'), $(selector1).children(selector2), $(selctor1).find(selector2)之类的方式。


js插件开发的一种方法:

js代码:

<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
(function ($) {
//默认参数 (放在插件外面,避免每次调用插件都调用一次,节省内存)
var defaults = {
color: '红色'
};
//扩展
$.fn.extend({
//插件名称
height: function (options) {
//覆盖默认参数
var opts = $.extend(defaults, options);
//主函数
return this.each(function () {
//激活事件
var obj = $(this);
obj.click(function () {
alert(opts.color);
});
});
}
})
})(jQuery);
$(function () {
$("p").height({ color: 'black' });
});
</script>
分享到:
评论

相关推荐

    分享我对JS插件开发的一些感想和心得

    在JavaScript插件开发的世界里,平衡实用性和灵活性是一项挑战。作为一个开发者,你可能会面临到是否使用现有的插件或自己创建的决策。这篇文章将探讨这两种选择的优缺点,并给出如何开发一个既轻量又具备强大适应性...

    JS插件开发之LightBox

    JS插件开发之LightBox,可兼容到IE6

    Illustrator插件开发指南

    其插件开发指南详细介绍了Illustrator插件的概念、结构、与Illustrator的交互方式、API历史发展概要以及插件开发的具体实现。接下来,我将系统地梳理这些知识点。 首先,插件是Adobe Illustrator中用于扩展或改变...

    Eclipse的JavaScript插件 JSEditor

    Eclipse作为一个强大的开源集成开发环境(IDE),广泛用于Java编程,但...使用Eclipse的JavaScript插件JSEditor,意味着你可以在一个专业且功能全面的环境中编写和调试JavaScript代码,享受到高效且便捷的开发体验。

    javascript插件开发的一些感想和心得

    在前端开发领域,JavaScript插件开发是一个重要的分支,它主要涉及编写JavaScript代码来实现特定功能或效果。这些插件可能用来丰富网页的交互性,提供特定的用户界面组件,或是执行后台任务。在开发这些插件时,...

    Eclipse的JavaScript插件 JSEditor.7z

    为了使用JSEditor插件,首先需要下载压缩包"Eclipse的JavaScript插件 JSEditor.7z",然后解压并按照Eclipse的扩展机制进行安装。通常,这涉及打开Eclipse的“帮助”菜单,选择“安装新软件”,然后指向解压后的插件...

    idea vue.js插件

    IntelliJ IDEA,作为一款强大的Java开发集成环境,也提供了对Vue.js的支持,通过安装Vue.js插件,可以极大地提升开发Vue项目的效率。 首先,Vue.js插件在IDEA中的主要功能包括: 1. **语法高亮**:Vue.js插件为Vue...

    eclipse下的js插件

    下面将详细介绍"Eclipse下的JS插件"这一主题,以及如何利用这些插件提升JavaScript开发体验。 1. **JavaScript Development Toolkit (JDT)**:虽然Eclipse默认支持JS开发,但其功能相对基础。为了提供更强大的JS...

    js插件

    【标题】:“JS插件”通常...对于想要学习JS插件开发或者提高网页交互性的开发者来说,这是一个很好的学习资源。通过研究这些文件,可以了解如何将JS插件与后端服务结合,以及如何利用jQuery等库来实现复杂的前端功能。

    yunzai-js插件 v1.0.zip

    "yunzai-js插件 v1.0.zip"是一个包含JavaScript插件的压缩包,主要用于软件工具的开发和使用。这个插件可能是开发者为提高工作...对于想要深入JavaScript插件开发或进行相关毕业设计的人员,这是一个非常有价值的资源。

    两个比较好用的Eclipse中javascript插件jsEditor jsEclipse

    本文将详细介绍两款在Eclipse中广受欢迎的JavaScript插件:jsEditor和jsEclipse。 首先,我们来看jsEditor。这款插件专为Eclipse设计,旨在提供一个高效、便捷的JavaScript开发环境。jsEditor的特点包括代码高亮、...

    Vue.js 插件开发详解

    ### Vue.js插件开发详解 #### 认识Vue.js插件 Vue.js的流行使得相关的插件越来越多,从官方推荐的vue-router、vuex到社区贡献的海量插件,它们极大地丰富了Vue.js的功能。虽然很多人对这些插件的使用驾轻就熟,但在...

    js word 插件的范例

    开发一个JavaScript Word插件需要掌握以下几个关键技能: 1. **JavaScript基础**:熟悉JavaScript语法,理解异步编程,如Promise和async/await。 2. **HTML/CSS**:构建用户界面,布局和样式设计。 3. **Office ...

    chrome插件开发 - tab页面切换插件

    Chrome插件开发是一个充满创新和实用性的领域,它允许开发者为全球最大的网络浏览器之一——Google Chrome,添加自定义功能和增强用户体验。在这个“chrome插件开发 - tab页面切换插件”项目中,我们关注的焦点是...

    JavaScript插件化开发教程 (一)

    ### JavaScript插件化开发详解 #### 一、开篇分析 在现代Web开发中,插件化编程已经成为提高代码复用性和模块化...以上就是关于JavaScript插件化开发的基本介绍和示例,希望对学习JavaScript插件开发的朋友有所帮助。

    tinymce插件开发

    ### TinyMCE插件开发详解 #### 一、TinyMCE简介 TinyMCE是一款流行的开源富文本编辑器,广泛应用于各种网站和应用程序中。它提供了丰富的功能和良好的用户体验,支持自定义插件来扩展其功能。本文将详细介绍...

    Chrome插件开发完整demo

    这个"Chrome插件开发完整demo"提供了一个完整的实例,帮助开发者深入理解如何构建自己的Chrome扩展。下面,我们将详细探讨Chrome插件开发的相关知识点。 1. **Chrome插件架构** Chrome插件由几个关键组件组成:`...

    海康威视摄像头WEB无插件开发包 V3.2(官方版本)

    "海康威视摄像头WEB无插件开发包 V3.2(官方版本)"是海康威视为开发者提供的一种高效、便捷的在线视频流处理工具,旨在帮助开发者在网页端实现对海康威视摄像头的实时监控功能,而无需依赖任何浏览器插件。...

    Android平台uni原生插件开发之通过uniapp引入原生插件

    2. **原生插件开发背景** 在uni-app中,有些特定的Android功能,如获取IMEI、使用蓝牙或访问硬件设备,由于安全或性能原因,不能直接在JavaScript层处理,这就需要通过原生插件来实现。原生插件可以是Java或Kotlin...

Global site tag (gtag.js) - Google Analytics