JavaScript库 开发规则


Posted in Javascript onJanuary 31, 2009

1. 保持无侵入性 我的HTML标记不想知道你的JavaScript代码。

2. 严禁修改和扩展Object.prototype! 这条很重要,因此需要一条完全针对它的规则。对象是JavaScript功能的基本构建模块,不要搞乱它们。

3. 不要过分扩展 对JavaScript内建对象的扩展越少越好。别误解我的意思。JavaScript的原生对象中有用的方法是有点少,有时不得不添加一两个自己的方法。但是,对于富有创造力的(库)程序员来说,添加这“一两个”方法是不够的。然而,请停下来!添加需要的就好。你对JavaScript内建对象的扩展越少,你的代码与其它框架产生的冲突的概率就越少。

4. 跟随标准 作为一个库的开发者,你定义JavaScript代码的模式。设计模式是编程语言能力弱的体现。 记住,JavaScript和DOM还在不断地被规格化。如果你想“修正”某些东西,最好先看看是否已经被修正,考虑已有的解决方案。 如果你跟随标准,就紧紧的跟着标准走(比如:别遗漏了forEach 方法的某个参数)。

5. 或着跟随主导 Mozilla引领着JavaScript. JavaScript语言的创建者Brendan Eich, 还在持续开发。和其它浏览器相比,在Mozilla浏览器中这些新的语言特性最先可用。 如果你想给JavaScript添加新的语言特性,可以先瞧瞧Mozilla标准。例如,你想给Array对象扩展一个枚举方法时,最好把这个方法取名为forEach而不是each. 如果你的确想提供尚不存在的语言特性,那么请紧紧跟随着现有的标准走(参考上面的例子)。

6. 保持灵活 如果我想修改行为而不改变你的源码,这容易不?如果不够容易,让它更容易些。

7. 管理内存 大家担心内存泄漏,你要尽力而为。

8. 淘汰浏览器嗅探 貌似浏览器厂商们将永远通过添加新特性来竞争;-) 作为库的开发者,你要跟得上最新的潮流。偶尔浏览一次Ajaxian是不够的,你必须奴隶般地阅读每一篇博客文章以找到下一个hack. 浏览器嗅探会上瘾的。

9. 小巧更佳 各种JavaScript库已经成熟。某些库已经应用在主流网站上。但并不是所有人都装了2MBit的DSL带宽,因此请保持库的小巧。更好的做法是,提供一个打包页面,允许按照我的需求有效地构建自己的库。

10. 第十条规则 Good ol' tenth rule(好像是一个口语用法,不知道怎么翻译好). 你可以始终依赖第十条规则。这就是: 保持可预测。 我应该可以猜到你的方法是用来干嘛的。如果我不知道某个方法的名字,也应该能让我猜出来。

11. 附加规则
文档,恼人但绝对是需要去做的。
你用的命名空间越多,我就越难记住,就如你的电话号码一样。
记住:可能有数百万人将执行你的代码。

Javascript 相关文章推荐
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 Javascript
JQuery实现展开关闭层的方法
Feb 17 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 Javascript
js如何获取网页所有图片
May 12 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
JS插入排序简单理解与实现方法分析
Nov 25 Javascript
详解JavaScript之ES5的继承
Jul 08 Javascript
最近项目写了一些js,水平有待提高
Jan 31 #Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 #Javascript
javascript Xml增删改查(IE下)操作实现代码
Jan 30 #Javascript
借用Google的Javascript API Loader来加速你的网站
Jan 28 #Javascript
javascript打开新窗口同时关闭旧窗口
Jan 16 #Javascript
JavaScript URL参数读取改进版
Jan 16 #Javascript
JavaScript 在线压缩和格式化收藏
Jan 16 #Javascript
You might like
PHP自动生成月历代码
2006/10/09 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
php compact 通过变量创建数组
2016/11/15 PHP
Dojo 学习要点
2010/09/03 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
python轻松查到删除自己的微信好友
2016/01/10 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
详解Python的三种可变参数
2019/05/08 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
土地转让协议书
2014/04/15 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2014年林业工作总结
2014/12/05 职场文书
学校党支部承诺书
2015/04/30 职场文书
办公用品管理制度
2015/08/04 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
cypress测试本地web应用
2022/06/01 Javascript