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 相关文章推荐
深入认识javascript中的eval函数
Nov 02 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
一些实用性较高的js方法
Apr 19 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
JS简单添加元素新节点的方法示例
Feb 10 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
简谈创建React Component的几种方式
Jun 15 Javascript
Vue formData实现图片上传
Aug 20 Javascript
vue实现井字棋游戏
Sep 29 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中创建和调用webservice接口示例
2014/07/25 PHP
php自定义错误处理用法实例
2015/03/20 PHP
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中变量交换的例子
2014/08/25 Python
让 python 命令行也可以自动补全
2014/11/30 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
python实现感知器算法(批处理)
2019/01/18 Python
python selenium操作cookie的实现
2020/03/18 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
什么是会话Bean
2015/05/14 面试题
手机促销活动方案
2014/02/05 职场文书
药学职务聘任书
2014/03/29 职场文书
建筑学专业自荐书
2014/07/09 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技