【规范】前端编码规范——jquery 规范
使用单引号
不推荐
$("div").html("<img src='1.jpg'>");
推荐
$('div').html('<img src="1.jpg">');
缓存变量
DOM 遍历是昂贵的,所以尽量将会重用的元素缓存。
不推荐
var h = $('#element').height();
$('#element').css('height', h - 20);
推荐
var $element = $('#element'),
h = $element.height();
$element.css('height', h - 20);
避免全局变量
jquery 与 javascript 一样,一般来说,最好确保你的变量在函数作用域内。
不推荐
$element = $('#element');
h = $element.height();
$element.css('height',h - 20);
推荐
var $element = $('#element'),
h = $element.height();
$element.css('height',h - 20);
使用驼峰式命名
使用驼峰式命名,在前面添加 $ 作为前缀,以便于标示为 jquery 对象。
不推荐
var first = $('#first'),
second = $('#second'),
value = $first.val();
推荐
var $first = $('#first'),
$second = $('#second'),
value = $first.val();
使用单 var 模式
将多条 var 语句合并为一条语句,建议将未赋值的变量放到后面。
var $first = $('#first'),
$second = $('#second'),
value = $first.val(),
k = 3,
cookiestring = 'SOMECOOKIESPLEASE',
i,
j,
myArray = {};
使用 on 来处理事件
在新版 jquery 中,更短的 on('click') 用来取代类似 click() 这样的函数。在之前的版本中 on() 就是 bind()。自从 jquery 1.7 版本后,on() 是附加事件处理程序的首选方法。出于一致性考虑,你可以简单的全部使用 on() 方法。
不推荐
$first.click(function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
$first.hover(function(){
$first.css('border', '1px solid red');
});
推荐
$first.on('click', function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
$first.on('hover', function(){
$first.css('border', '1px solid red');
});
精简 jquery
一般来说,最好尽可能合并属性。
不推荐
$first.click(function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
推荐
$first.on('click', function(){
$first.css({
'border':'1px solid red',
'color':'blue'
});
});
链式操作
jquery 能够很轻易的实现链式操作。
不推荐
$second.html(value);
$second.on('click', function(){
alert('hello everybody');
});
$second.fadeIn('slow');
$second.animate({height: '120px'}, 500);
推荐
$second.html(value).on('click', function(){
alert('hello everybody');
}).fadeIn('slow').animate({height: '120px'}, 500);
维持代码的可读性
伴随着精简代码和使用链式的同时,可能带来代码的难以阅读。添加缩进和换行能起到很好的效果。
不推荐
$second.html(value).on('click', function(){
alert('hello everybody');
}).fadeIn('slow').animate({height: '120px'}, 500);
推荐
$second.html(value)
.on('click', function() {
alert('hello everybody');
})
.fadeIn('slow')
.animate({
height: '120px'
}, 500);
选择短路求值
短路求值是一个从左到右求值的表达式,用 && 或 || 操作符。
不推荐
function initVar($myVar) {
if (!$myVar) {
$myVar = $('#selector');
}
}
推荐
function initVar($myVar) {
$myVar = $myVar || $('#selector');
}
避免通用选择符
不推荐
$('.container > *');
推荐
$('.container').children();
缓存父元素
正如前面所提到的,DOM 遍历是一项昂贵的操作。典型做法是缓存父元素并在选择子元素时重用这些缓存元素。
不推荐
var $container = $('#container'),
$containerLi = $('#container li'),
$containerLiSpan = $('#container li span');
推荐
var $container = $('#container '),
$containerLi = $container.find('li'),
$containerLiSpan= $containerLi.find('span');
避免隐式通用选择符
通用选择符有时是隐式的,不容易发现。
不推荐
$(':button');
推荐
$('input:button');
优化选择符
例如,id 选择符应该是唯一的,所以没有必要添加额外的选择符。
不推荐
$('div#myid');
$('div#footer a.myLink');
推荐
$('#myid');
$('#footer .myLink');
避免多个 id 选择符
在此强调,id 选择符应该是唯一的,不需要添加额外的选择符,更不需要多个后代 id 选择符。
不推荐
$('#outer #inner');
推荐
$('#inner');
熟记技巧
你可能对使用 jquery 中的方法缺少经验,一定要多查看文档,可能会有一个更好或更快的方法来使用它。
不推荐
$('#id').data(key, value);
推荐
$.data('#id', key, value);
坚持最新版本
新版本通常更好:更轻量级,更高效。当然你需要考虑你要支持的代码的兼容性。例如,2.0 版本不支持 ie 6/7/8。
摒弃弃用方法
关注每个新版本的废弃方法是非常重要的并尽量避免使用这些方法。
不推荐
$('#stuff').live('click', function() {
console.log('hooray');
});
推荐
$('#stuff').on('click', function() {
console.log('hooray');
});
利用 CDN
CDN 能保证选择离用户最近的缓存并迅速响应。(推荐 jquery 官网提供的 CDN)。
必要时组合 jquery 和 javascript 原生代码
如上所述,jquery 就是 javascript,这意味着用 jquery 能做的事情,同样可以用原生代码来做。原生代码的可读性和可维护性可能不如 jquery,而且代码更长。但也意味着更高效(通常更接近底层代码可读性越差,性能越高)。牢记没有任何框架能比原生代码更小,更轻,更高效。
参考文献
【规范】前端编码规范——jquery 规范的更多相关文章
- 前端编码规范(4)—— CSS 和 Sass (SCSS) 规范
CSS and Sass (SCSS) style rules ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称.代替表象和晦涩难懂 ...
- 前端编码规范(2)—— HTML 规范
HTML 规范 文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html>. (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及 ...
- 前端编码规范之CSS
"字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...
- 前端编码规范之JavaScript
上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...
- JS前端编码规范
转自<前端编码规范之JavaScript>,网址:http://www.cnblogs.com/hustskyking/p/javascript-spec.html 一个是保持代码的整洁美 ...
- web前端编码规范
简要介绍 本文通过参考百度腾讯等前端编码规范(链接建文末),得出个人习惯的编码规范.个人编码规范采用在不影响可读性的情况下能省就省,尽量简洁,不需要就直接去掉. 最佳原则不管是个人编码规范还是团队编码 ...
- 前端编码规范,个人感觉bootstrap总结的不错,拿出来给大家分享
前端编码规范,个人感觉bootstrap总结的不错,拿出来给大家分享 http://codeguide.bootcss.com/#html-doctype HTML 语法 HTML5 doctype ...
- web项目开发 之 前端规范 --- HTML编码规范
此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范文 档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 转载请注明出处,JS前端实用开 ...
- Web前端开发规范文档(google规范)
(Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 区分大小写 xhtml 区分大小写,xhtml要求 标签名 属性名 值都要小写,并且要有双引号和 标签闭合. css 元素名称以及i ...
- 使用 Eslint & standard 规范前端代码
前言 JavaScript的动态语言类型,给它带来了独特的魅力,产生了风格多样的开发范式,同时也带来了一些问题,从运行时常见的 undefined .null 报错,到代码随意的加减分号.换行.空格, ...
随机推荐
- BZOJ.5461.[PKUWC2018]Minimax(DP 线段树合并)
BZOJ LOJ 令\(f[i][j]\)表示以\(i\)为根的子树,权值\(j\)作为根节点的概率. 设\(i\)的两棵子树分别为\(x,y\),记\(p_a\)表示\(f[x][a]\),\(p_ ...
- Scrapy基础(十一)————导出数据到json文件中
之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls:这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: ...
- C Windows控制台字符版本俄罗斯方块
//一个可以工作在Windows控制台字符界面下的俄罗斯方块 //工作在非图形模式,无需其他库依赖,单个C文件代码即可运行 //支持最高纪录,并且对于纪录进行了加密 //By wrule 2015年1 ...
- JS 正则表达式深入
1.零宽断言 断言指正则表达式可以指明在指定的内容前面或后面会出现满足规则的内容 零宽指的是断言只是匹配的表达式,不占据宽度,也不会出现在返回的匹配结果中 "<span class=& ...
- 3ds max学习笔记-- 灯光调节
8,软件内默认有两盏灯,在渲染时不产生投影和高光点.手动添加灯光时,系统灯光自动关闭: 1,标准灯光:聚光灯,平行光,泛光 ,天光: a,聚光灯:目标聚光灯和自由聚光灯,当目标聚光灯的[目标]取消勾选 ...
- Ruby面向对象
Ruby面向对象 Ruby是真正的面向对象语言,一切皆为对象,甚至基本数据类型都是对象 基本用法 class Box # 构造函数 def initialize(w,h) @with, @heig ...
- boost::lockfree::queue多线程读写实例
最近的任务是写一个多线程的东西,就得接触多线程队列了,我反正是没学过分布式的,代码全凭感觉写出来的,不过运气好,代码能够work= = 话不多说,直接给代码吧,一个多消费者,多生产者的模式.假设我的任 ...
- angular清除select空格
<select class="form-control" id="policy_set_id" ng-model="add.poli ...
- 自定义simple_tag和filter在html中渲染出来的联系和区别
关于 simple_tag: 1,在app下创建一个(templatetags)目录,(被引用的模块必须放在该目录下,且目录名称不可更改): 2,创建任意py文件: 3,创建template对象: f ...
- Vue(三)常用指令
(1) v-model 双向数据绑定,一般用于表单元素 <script> window.onload=function(){ new Vue({ // el:'.itany', el:'d ...