如果您阅读此博客,很有可能您也认识 David Walsh。我和 David 来自同一个家乡(威斯康星州麦迪逊),并且多年来一直是朋友。我们一起合作了一些项目,并且一起撰写了许多双人文章。大多数情况下,我只是向他询问我对 PHP 和 JavaScript 的疑问,而他总是乐于助人。我终于抽出时间向他提出一些问题了。继续阅读以了解有关客户工作、个人反感和经典的 jQuery 与 MooTools 之争。
Chris:让我们听听你对 jQuery 与 MooTools 之争的看法。你非常了解这两个框架,所以你的意见比像我这样主要使用 jQuery(因为这是我唯一了解的框架)的人更有分量。
David:这对许多人来说是一个非常敏感的话题,但我一直都很直率(有时过于直率),所以我只会直抒胸臆。在解释我的立场之前,我需要说明的是,我是 MooTools JavaScript 框架的核心开发者。
jQuery 与 MooTools 之争常常被极端的观点、公然的谎言和陈旧的谬误所笼罩。不幸的是,这些观点仍然存在,因此我回答这个问题的目标是让每个人都回到现实,让人们抛开情绪,客观地思考这两个 JavaScript 框架。同样的想法也适用于 Dojo、Prototype、YUI 等。
关于这两个框架的最大谬误是,开发人员和社区彼此不喜欢。在我看来,这与事实相去甚远。我曾与 John Resig 就 Sizzle 进行了友好的邮件交流,偶尔也会转发 jQuery 的 Karl Swedberg 的推文,并且从不犹豫地向 Rey Bango 开个玩笑。我们框架之间的关系非常融洽。
关于 jQuery 与 MooTools 之争的另一个谬误是,设计师/开发人员需要选择一个并坚持使用它。这与事实相去甚远,我认为这样做是完全愚蠢的。从什么时候开始,不懂一门编程语言/框架就成了一种荣誉?想象一下,一个同时了解这两个框架的开发人员可以获得多少额外选项!我甚至要说,任何受人尊敬的设计师/开发人员至少都会尝试其他框架。学习 jQuery 让我也更加喜爱 MooTools。萝卜青菜,各有所爱。
这两个框架之间最大的区别(至少对于 90% 的设计师/开发人员来说)可能是不同的语法。归根结底,它取决于个人喜好。作为一个“接受过经典训练的程序员”,我更喜欢 MooTools 面向对象的编程方式,而不是 jQuery 的结构。我更喜欢myElement.setStyle()而不是myElement.css()。我更喜欢 MooTools 的var request = new Request({options})而不是 jQuery 的$.ajax({options})。我还会争辩说 MooTools 更有模块化,但我们可以整天讨论每个框架/库的不同优势。归根结底,它们都是出色的代码库。
不过,作为 MooTools 核心开发团队的一员,我毫不犹豫地说 jQuery 是一个不错的库。我钦佩 jQuery 团队的组织能力以及该库易于学习的特性。“jQuery”似乎是目前 JavaScript 中最大的流行词,因此祝贺 jQuery 团队及其社区培养了这种认知。
不过,作为 MooTools 的“内部人士”,我对 MooTools 团队在 2010 年将提供的成果感到兴奋。我们将推出 Forge(我们的公共插件存储库),发布 MooTools 2,继续发展 MooTools More,展示更多社区工作等等。MooTools 万岁!
但归根结底,我的建议是确保您尝试多个 JavaScript 库,并放弃您可能对其他 JavaScript 社区的任何负面误解。您最终可能会喜欢其中一个,更喜欢您喜欢的框架,或者仅仅沉浸在您了解多个框架的知识中。
我认为 Dojo 的 Peter Higgins 说得最好:它只是 JavaScript!
Chris:你在一家为众多客户开发大量网站的公司工作。你喜欢这样吗?或者说,从事一个大型项目对你来说会更好吗?
David:我认为描述我日常工作的最佳词语是“不可预测”。我的雇主大约有 100 个活跃的网络客户,这意味着在任何一天,我都有可能接到来自 100 多人的支持、新功能等方面的电话请求。显然,并不是每个人都在同一天打电话,但安排我的时间表至少可以说很繁忙。当仅仅是接到一堆电话的威胁就让我慢下来时,很难专注于一项特定的任务。我有很多日子,由于紧急支持电话或客户会议,我计划的任务直到下午 2 点(一天中的 5 个小时后)才开始。有时,任何事情都可能在任何一天发生的可能性会让人感到瘫痪和沮丧。
在这种环境中工作的优势在于,我接触到了各种类型的客户、企业和技术需求。我学习了一些 ColdFusion、jQuery、SQL Server、ASP、IIS 技巧以及许多其他我做梦也想不到(或想学习)的技能。我为自己积累的知识感到自豪,尽管很多时候都是勉为其难,但通过接触如此多的网站,我获得了这些知识。
理想情况下,我想更多地关注大约十几位客户。这样做将使我能够更密切地建立客户/供应商关系,花更多时间改进代码质量,并更好地(更频繁地)分析客户的网站。正如您从我的博客中可能看出的那样,我痴迷于不断改进网站。我会问自己这样的问题:“我们如何才能改进它?我可以添加什么来将这个网站提升到一个新的水平?哪些页面获得了适当的关注?我们需要为哪些页面获得更多流量,以及我们如何才能做到这一点?”当处理几十个网站时,由于时间限制、预算限制以及试图与这么多不同的人协调,很难保持这种心态。不幸的是,由于处理了这么多网站,我觉得自己有很多“未完成的事务”。
希望我很快就能开始专注于更少的网站。
Chris:你在网页设计中最大的反感是什么?我知道有一件事你总是对我念念不忘……还有其他的吗?
David:我最大的反感是,当设计师和开发人员没有为可点击元素提供“指针”光标时。标签、按钮和具有 JavaScript 点击事件的元素都应该提供指针光标。告诉用户他们可以点击某个东西!这让我非常烦恼,以至于我在 jQuery 和 MooTools 中都编写了 JavaScript 自定义事件,自动为具有点击事件的元素提供指针光标。
以下是我反感的其他一些网页设计习惯的简要列表
- 使用 JavaScript 修复服务器端问题。
- 仅仅为了使用而使用 AJAX。
- 全 Flash 网站。
- 多行 CSS(CSS 文件不应有数百行!)。
- 完全无视 IE6(它还没有死,即使你希望它死!)。
- 链接显示“点击此处”。(如果您对链接文本进行了描述,则不需要说“点击此处”)。
显然,上述每一点都有其适用场景。如果您正在为老年人群体编码网站,“点击此处”链接就像黄金一样。我的博客的流量约为 1% 来自 IE6,因此我不会花太多时间让我的网站对这些人友好。在我看来,在目标用户群更广泛的客户网站上不支持 IE6 是有罪的并且懒惰的。不要仅仅因为你对 IE6 有偏见而损害客户的业务!
Chris:我们之前几次谈到过博客中的一种奇怪现象。如果你花 20 分钟写一篇简单的帖子,它最终会比你花 8 个小时周末时间写的一篇帖子更受欢迎。这是怎么回事?
David: 我认为这里有很多因素在起作用。首先,大多数设计师和开发人员都很忙碌,选择不阅读(也不分享)长篇帖子。其次,我认为我们(作为博客开发人员)往往会爱上自己的修辞,并在帖子中过于详细。另一个现实是,读者往往想要“快速解决方法”或“片段”,这些方法可以将他们的网站从 3 分提升到 8 分;我们都知道,一篇长篇帖子不会吸引这些人的注意力。
真正重要的是,我们不要仅仅为了取悦大众而写作——我们写我们感兴趣的东西,以及我们希望其他人可能喜欢的东西。从那里我们得到反馈(或被喷),开始讨论改进,并希望在每个帖子中都能获得比最初更好的产品。尽管如此……在帖子花费很长时间却发现难以找到受众,这仍然很糟糕!
Chris: 如果你在一个项目中不能使用 PHP 作为服务器端语言,你会选择什么?
David: 这真的取决于项目的范围、预算和未来的维护考虑。任何优秀的开发人员都会真正做到以项目为重,而不管个人喜好如何。如果我开始一个小型个人项目,并且不能使用 PHP,我可能会使用 Python。Python 速度很快,并且在主流网站中越来越受欢迎。Google 使用 Python 很多。如果我开始一个大型项目,我可能会选择 Java 或 Ruby。两者都拥有庞大而热情的社区,并且已被证明是可靠的。
一项正在蓬勃发展且令人兴奋的服务器端技术是我们最喜欢的客户端技术:javascript。MooTools 有一个服务器端版本,MooTools 贡献者 Jabis Sevon 和 Mark Obcena 正在开发一个名为Raccoon 的 MooTools 服务器端框架。我对服务器端 javascript 的未来感到兴奋!
很棒的访谈,我非常喜欢。
我认为 David 说得很有道理,当设计师和开发人员没有为可点击元素提供“指针”光标时,这很烦人。
确实如此。
尽管你,David,偏爱 MooTools(这在阅读整个访谈之前就已经很清楚了),但我不同意你的观点。在“对比”讨论中,双方都应该爱好和平。
关于 IE6(获胜的开发者是那些仍然支持它的人!)光标和“点击此处”内容的观点很好。但是,“非多行 CSS”听起来像是巨大的麻烦,甚至令人头疼。
不错的访谈,不能说我同意所有个人意见,但正如所说
“各有所好。”
Steve
我从未想过要为每个可点击元素提供指针光标。我个人认为在表单提交按钮上看到它有点奇怪——但对于那些不习惯调用提示应该是什么样子的网页用户来说,我想最好还是使用旧的指针作为后备。
哦,顺便说一句:我迫不及待地想要《深入 WordPress》的印刷版!
谢谢你们。非常有信息量,读起来也很不错。干杯。
MooTools 与 jQuery——我的答案始终是两者兼用,除非其中一个库在 Google AJAX Libraries API 中调用 google.load() 时发生冲突。
关于不同 JS 库的观点很好,不需要对不同的库及其使用者怀有敌意。它们都有优缺点,所以让大家随意选择。我个人喜欢 jQuery,但 MooTools 也很酷,我最终想更多地学习它。
多行 CSS 也是我的一个个人意见。如果你有数百行代码,那么你应该重新考虑你的项目。你为什么要想要为自己制造更多滚动?扫描文件时,选择器是最重要的部分,然后只需向右滑动并选择你的属性。如果你使用的是带有语法着色的编辑器(我使用 Coda),那么区分属性和值就会更容易。帮自己一个忙,利用水平空间。我是一个“主要使用单行”的格式化者。我无法相信多行在投票中获胜。
我认为多行 CSS 仅仅是个人喜好,无论哪种方式更容易让人浏览。我在投票中投了多行,但在过去的一年中,我发现自己一直在切换。
非常感谢 Chris 的博客并提供精彩的文章。我几乎完全从你的教程和文章中学到了 CSS。阅读本文后,我也将访问 Walsh 先生的博客。迫不及待地想阅读《深入 WordPress》!
不用等待《深入 WordPress》的好处是它已经可以获取了 http://digwp.com/book/ :) 里面有很多很棒的内容
仅供参考——Raccoon 项目的链接是
http://raccoon.keetology.com/
太棒了!
“以下是我的一些其他让我感到烦恼的网页设计习惯
…* 全 Flash 网站…”
哈哈
David 的回答很有信息量。感谢您的采访
有趣的帖子,不过我是一个多行 CSS 爱好者!无论如何,我使用 PHP 来压缩它!
我更喜欢多行 CSS。它更容易阅读……
我讨厌人们在一行中写太多 CSS 语句,然后你必须眯着眼睛才能找到语句的结尾……
尽管如此,David Walsh 当然是一位天才。随便看看他的博客就能看出来。
我认为 David Walsh 很糟糕……不