PorkFat Finding Neverland

怎样修饰饭否的JavaScript插件

08.02.2007 · Posted in 心得, 饭否

饭否(fanfou.com)的JavaScript插件可以植入blog里,可是好多人不知道怎样修改插件的外观。

首先,这不是做不到的事。JavaScript插件在blog中生成一段xhtml代码,和blog其他正文内容无异,所以也是可以通过CSS来调节的。下面这段就是实际生成的代码片断:

代码

从这段代码的结构来看,已经可以清楚地在CSS中定义页面元素的表现,比如撰写这样的CSS代码:

.fanfou_statuses { padding:1em; background:#0c1021; color:#fff;}
.fanfou_statuses ul { list-style-type:disc;}
.fanfou_statuses a { color:#61ce3c; text-decoration:none;}
.fanfou_statuses a.stamp { color:#7f90aa;}
.fanfou_statuses img { border:0;}

得到的效果就是下图这样了。

效果

适合 JavaScript 库作者的规则

04.23.2007 · Posted in JavaScript, 译稿

这是 Dean Edwards 在一个月前写在他的 blog 上的一篇文章。我正在学 JavaScript,也许要用到一个 JavaScript 库,这些规则刚好从侧面教我分析那些作者的做法,不至于面对许多库茫然无措,因此翻译过来共勉

PS: 原文有很多外部链接,推荐去看看

http://dean.edwards.name/weblog/2007/03/rules/

适合 JavaScript 库作者的规则

大约六个月之前,我在 base2 的工作启动前写了此文。当时我决定先不发布,因为我认为它听起来有点华而不实。经再三思量,这些规则还不坏,并且我最终保留下来。因此在这里献上我在十月份为自己写的规则。

  1. 不乱入(Be unobtrusive; hlb 的台式翻译XD)
    我的 HTML 不应该去适应你的 JavaScript。
  2. 禁止 Object.prototype
    这条相当重要,所以需要一条完全针对它的规则。对象是构建 JavaScript 功能的基础积木,别胡乱摆弄。
  3. 不要过分扩展
    你对 JavaScript 内建对象的扩展越少越好。别理解错,原生 JavaScript 对象的有用的方法是有点少,你会感到被迫增加一两条你自己的,但是“一两条”对于创造性的(库)程序员来说是不够的。就此停手吧,加你需要的就好。你对 JavaScript 内建对象的扩展越少,你和其它库的冲突越少。
  4. 跟随标准
    作为一个库的作者,你在定义 JavaScript 代码的模式。在程序设计语言中模式是虚弱的征兆。记住,JavaScript 和文档对象模型在频繁更新,如果你正要“修正”某处,那么注意看看它是否还没被修正。考虑现成的解决方法,如果你跟随标准,就紧随它们(举例来说:别遗漏 forEach 方法的参数)
  5. 或者跟随主导
    Mozilla 主导 JavaScript。这门语言的创造者 Brendan Eich,不断在发展它,新的语言特征在 Mozilla 浏览器中比任何其它浏览器更早可用。如果你要增加语言特征到 JavaScript,那么首先关注 Mozilla 标准。例如:如果你想要扩展 Array 来允许一个枚举方法,那就调用 forEach 方法来代替 each。如果你确实提供缺少的语言特征,那么紧随已存在的标准(见上文)。
  6. 灵活可塑
    如果我要修改行为而不改变你的库的源码呢?那有多容易?不够容易的话,做得更容易些。
  7. 管理内存
    人们担心内存泄露,尽力为之。
  8. 摆脱浏览器嗅探
    貌似浏览器厂商将永远通过添加新的特性来竞争。 ;) 作为一个库的作者,你必须跟得上最入潮的流行。偶尔浏览 Ajaxian 可不够好,你必须奴隶般地读每一个 blog 来寻找下一个 hack。浏览器嗅探会上瘾的
  9. 轻量级的更好
    JavaScript 库已经成熟,其中一些使主流网站得以运作。但是我们不都在用 2MB 的 DSL 线路,所以让你的库保持苗条。然而更好的是,提供一个允许我依我所需有效率地创建库的构造页面。
  10. 第十条规则
    你可以一直依靠第十条规则,这条规则就是:可预料的。我应该可以猜得出你的方法是做什么的,并且如果我不知道一个方法叫做什么,我应该也可以猜得出。
  11. 附赠规则
    1. 文档,让人讨厌但这是真的
    2. 你用了越多的名字空间,我越不可能记住你的电话号码
    3. 记住,可能有数百万的人们会执行你的代码

记上一笔,base2 没有改变任何原生的 JavaScript 对象。