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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
JS制作适用于手机和电脑的通知信息效果
Oct 28 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
Jan 16 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
详解Vue2 SSR 缓存 Api 数据
Nov 20 Javascript
Vue快速实现通用表单验证的示例代码
Jan 09 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的基本常识小结
2013/07/05 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
Python中的With语句的使用及原理
2020/07/29 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
学习十八大报告感言
2014/02/28 职场文书
大学生交通专业求职信
2014/09/01 职场文书
关于学习的决心书
2015/02/05 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
搭建Yolov5服务器
2022/04/30 Servers