良好的JavaScript代码在开源Web应用程序的例子

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

直到最近,我使用的仅仅是字面对象和jQuery的一些部分,但是在阅读道格拉斯·克罗克福德的“JavaScript:The Good Parts”之后,我现在完全意识到,除了AJAX,DOM修改和简单的animation之外,JavaScript还有更多的东西。

问题是,JavaScript似乎没有太多的标准化。 OOP /inheritance模式的数量压倒我。 我不习惯每个框架/库提供自己的inheritance障碍。 我也不想在这样的事情上做出错误的决定,因为这意味着在出现一些问题的时候会重写所有的代码。

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

我总是推荐给那些对这种事感兴趣的人: 坚持你的团队 。 如果他们使用camelCase的方法,你使用它。 如果他们使用snake_casevariables,你可以这样做。 如果你的团队偏好选项卡上的空格; 使用它们。

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

如果你不是在一个团队工作,并且对使用编码风格感兴趣, 然后使用你使用最多的库的风格

  • 如果你使用jQuery jQuery编码风格指南
  • 如果您使用Closure Library,请使用JavaScript Google编码风格
  • 如果您使用MooTools库,请使用MooTools编码风格指南

组织方面,封闭是最好的..但对我来说感觉就像我正在阅读JAVA而不是JavaScript。 去搞清楚。

是的。 有几个JavaScript专家写了很多关于如何编写JavaScript的文章,关于基于JavaScript的面向对象的原型,甚至关于如何完成缩进和命名variables。

不过,如果你正在寻找一个JavaScript的大型实现作为例子,我会寻找HTML5游戏的实现。 实际上保证你会发现一个足够大的,写得很好的,没有被缩小的例子。

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

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

至于jQuery的源代码在评论中提到。 jQuery做得不错,但是我也会检查一下Narwhal JS中应该怎么做的例子。

这是一个很好的免费devise模式书,我发现有用的基本JavaScript和jQuerydevise模式 。

你不会find你的问题的一个解决scheme,这就是JavaScript的devise。 我会build议试验。 我发现道格拉斯·克罗克福德有许多伟大的想法,但这并不意味着你必须跟随他的信。

一个好的项目是: http : //impactjs.com/一个很好的阅读是: http : //addyosmani.com/blog/essentialjsdesignpatterns/

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

然而,我已经写了干净,充分的面向对象的JavaScript在工作。 这是专有的,所以我不能分享,但我可以解释什么对我来说是学习如何做到这一点:

1)阅读Mozilla的JavaScript面向对象编程教程。 他们对javascriptinheritance的解释正是googleclosures使用的。 就我个人而言,我认为Crockford所谓的伪古典是最简单的阅读和维护,因为我知道使用类(java,c#,python和php。perl的古怪的这里没有任何类)的其他5种编程语言中的4种。

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

2)阅读斯托扬·斯特凡诺夫(Stoyan Stefanov)的书“Object Oriented Javascript”。

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

4)结构化你的代码,使其具有许多不同的文件,类似于你如何使用具有类的语言的类。

5)在没有IOC容器的情况下实现dependency injection,方法是先创build顶层的所有对象,然后将其放入依赖它们的对象中。

还有很多,但希望这是一个有益的开始。

这是我觉得是在JavaScript中实现inheritance的正确方法。 这是从谷歌封闭库:

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

巧合的是,今天在SlashDot上有一篇关于Javascript的第六版的评论 :权威指南 ,那里的评论者说“保留了它作为JavaScript程序员的最终参考资源的王冠”。 这是1,100页。

是的,这不是你正在寻找的示例应用程序,但书中有很多关于最佳实践的例子和build议。

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

你可以看书。 关于JS代码的组织和包括inheritance的常见模式的最好的一个是Stoyan Stefanov的JavaScript Patterns。

另一个好的学习方法就是看看其他开发者的优秀代码并使用它。 我从代码组织和使用模式的angular度看过的最好的图书馆是Google Closure Library 。 Google在Gmail的Google Docs这样的RIA内部使用它。

irc的一个善良的人build议这本电子书,我发现它非常有帮助。

学习JavaScriptdevise模式

Addy Osmani的一本书

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