良好的JavaScript代码在开源Web应用程序的例子
我正在努力寻找一种好的JavaScript代码编写方式,这种代码效率高,被其他开发人员广泛接受,而且不是很难看。
直到最近,我使用的仅仅是字面对象和jQuery的一些部分,但是在阅读道格拉斯·克罗克福德的“JavaScript:The Good Parts”之后,我现在完全意识到,除了AJAX,DOM修改和简单的animation之外,JavaScript还有更多的东西。
问题是,JavaScript似乎没有太多的标准化。 OOP /inheritance模式的数量压倒我。 我不习惯每个框架/库提供自己的inheritance障碍。 我也不想在这样的事情上做出错误的决定,因为这意味着在出现一些问题的时候会重写所有的代码。
所以我在寻找的是现有的开源Web应用程序,如果可能的话,在客户端使用JavaScript,以查看实际项目中使用的模式。 我想看看Web应用程序的代码,而不是框架或库。 我不介意,如果这些Web应用程序是基于一些框架(如果它是Dojo或RequireJS,它会更好,因为我正在使用它们;)
我总是推荐给那些对这种事感兴趣的人: 坚持你的团队 。 如果他们使用camelCase
的方法,你使用它。 如果他们使用snake_case
variables,你可以这样做。 如果你的团队偏好选项卡上的空格; 使用它们。
永远不要进入一个标准化的风格改变的事情,因为它看起来更好,除非它造成严重的问题。
如果你不是在一个团队工作,并且对使用编码风格感兴趣, 然后使用你使用最多的库的风格 。
- 如果你使用
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/