开源Web应用程序中的良好JavaScript代码示例

时间:2011-06-02 10:43:59

标签: javascript design-patterns open-source

我正在努力寻找一种编写优秀JavaScript代码的方法,这些代码效率很高,被其他开发人员广泛接受并且不是很难看。

直到最近,我使用的只是文字对象和jQuery的一些内容,但在阅读了Douglas Crockford的“JavaScript:The Good Parts”后,我现在完全意识到JavaScript不仅仅是AJAX,DOM修改和简单的动画。

问题是JavaScript似乎没有太多标准化。可用的OOP /继承模式的数量超过了我。我并不习惯每个框架/库都提供自己的继承。我也不想对这些事情做出错误的决定,因为这意味着在出现一些问题时会重写所有代码。

所以我正在寻找的是现有的开源Web应用程序,如果可能的话,在客户端使用JavaScript,以查看实际项目中使用的模式。我想看看Web应用程序的代码,而不是框架或库。我不介意,如果这些网络应用程序是基于一些框架(如果它是Dojo或RequireJS,它会更好,因为我正在使用它们;)

8 个答案:

答案 0 :(得分:7)

我总是向所有对这类事情感兴趣的人推荐:坚持你的团队做什么。如果他们使用camelCase方法,则使用它。如果他们使用snake_case作为变量,那么就这样做。如果你的团队喜欢空格而不喜欢;使用它们。

永远不要进入一个标准化风格改变事物的固定团队,因为它看起来更好,除非它造成严重问题。

如果您没有在团队中工作,并且您对使用编码风格感兴趣;然后使用您最常用的库的风格

组织方面,关闭是最好的...但对我来说,感觉就像我在阅读JAVA而不是javascript。去图。

答案 1 :(得分:5)

是的。有一些JavaScript大师已经写了很多关于如何编写JavaScript,关于基于原型的OOP与JavaScript,甚至关于应该如何进行缩进和命名变量。

但是,如果您正在寻找一个大型JavaScript实现作为示例,我会寻找HTML5游戏实现。几乎可以肯定的是,你会发现一个足够大,写得很好但没有缩小的例子。

答案 2 :(得分:4)

如果您对JavaScript标准感兴趣,我会查看commonJS。他们对如何完成JavaScript有很多好的想法。

BravoJS是浏览器的一个很好的模块实现。

至于示例,评论中提到了jQuery的源代码。 jQuery做得很好但是我也会查看Narwhal JS以了解应该如何完成的示例。

这是一本很好的免费设计模式书,我发现它很有帮助Essential JavaScript And jQuery Design Patterns

您找不到解决问题的方法,这就是JavaScript的设计方式。我建议做实验。我发现道格拉斯·克罗克福德有很多很棒的想法,但这并不意味着你必须跟着他去写信。

答案 3 :(得分:2)

答案 4 :(得分:2)

好问题。我找不到一个编写良好的面向对象的开源应用程序的例子。微小的MCE是如此,但我不会认为它写得很好:http://www.tinymce.com/

但是,我已经在工作中编写了干净,考​​虑周全的面向对象的javascript。它是专有的,所以我不能分享它,但我可以解释一下对我来说有什么用来学习如何做到这一点:

1)阅读mozilla javascript面向对象编程教程。他们对javascript继承的解释正是谷歌闭包使用的。就我个人而言,我认为Crockford所谓的伪经典是最容易阅读和维护的,因为我知道其他5种编程语言中有4种使用类(java,c#,python和php.perl这里是古怪的,没有类)。

https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript

2)阅读Stoyan Stefanov撰写的“面向对象的Javascript”一书。

3)获取现有的程序javascript代码库并将其重构为对象。使用Robert C. Martin的“清洁代码”中的提示,因为它们适用于任何编程语言。

4)构造你的代码,使它有许多不同的文件,类似于你在类的语言中使用类的方式。

5)通过在顶层创建所有对象并将它们反馈到依赖于它们的对象,实现不带IOC容器的依赖注入。

还有更多,但希望这是一个有用的开始。

我认为这是在javascript中实现继承的正确方法。这是来自谷歌关闭库:

goog.inherits = function(childCtor, parentCtor) {
  /** @constructor */
  function tempCtor() {};
  tempCtor.prototype = parentCtor.prototype;
  childCtor.superClass_ = parentCtor.prototype;
  childCtor.prototype = new tempCtor();
  childCtor.prototype.constructor = childCtor;
};

答案 5 :(得分:0)

有几种方法可以学习如何编写优秀的JS代码。

你可以看书。关于JS代码组织以及包括继承在内的常见模式的最佳方法是Stoyan Stefanov的JavaScript Patterns。

另一种学习方法是查看其他开发人员的优秀代码并使用它。我从代码组织和模式使用方面看到的最好的库是Google Closure Library。它在谷歌内部使用,如Gmail Google Docs。

答案 6 :(得分:0)

巧合的是,今天在SlashDot上有第6版 Javascript:The Definitive Guide review,评论者说“保留其作为JavaScript终极参考资源的王冠”程序员“。这是1,100页。

是的,这不是您所寻求的示例应用程序,但该书确实有很多关于最佳实践的示例和建议。

答案 7 :(得分:0)

irc的一位善良的人建议使用这本电子书,我发现它非常有用。

学习JavaScript设计模式

Addy Osmani的一本书

http://addyosmani.com/resources/essentialjsdesignpatterns/book/