utiliza que puede programas programacion hacer fuente ejemplos con como codigos codigo caracteristicas javascript design-patterns open-source

que - Ejemplos de buen código JavaScript en aplicaciones web de código abierto



programacion javascript (8)

Casualmente, hoy en SlashDot hay una review de la sexta edición de Javascript: The Definitive Guide , que el crítico dice que "conserva su corona como el último recurso de referencia para los programadores de JavaScript". Son 1.100 páginas.

Sí, esta no es la aplicación de muestra que estaba buscando, pero el libro tiene muchos ejemplos y consejos sobre las mejores prácticas.

Estoy luchando por encontrar una forma de escribir un buen código JavaScript que sea eficiente, ampliamente aceptado por otros desarrolladores y no muy feo.

Hasta hace poco, lo que usaba eran objetos literales y fragmentos de jQuery, pero después de leer "JavaScript: The Good Parts" de Douglas Crockford ahora me doy cuenta de que hay más en JavaScript que AJAX, las modificaciones DOM y la animación simple.

El problema es que JavaScript parece no estar muy estandarizado. La cantidad de patrones de POO / herencia disponible me abruma. No estoy acostumbrado a que cada framework / biblioteca proporcione su propia impedancia de herencia. Tampoco quiero tomar una decisión equivocada con respecto a tales cosas, porque esto significaría volver a escribir todo el código en caso de problemas.

Entonces, lo que estoy buscando son aplicaciones web de código abierto que usan mucho JavaScript, si es posible en el lado del cliente, para ver qué patrones se usan en proyectos reales. Me gustaría ver el código de aplicaciones web, no marcos o bibliotecas. No me importa si esas aplicaciones web se basan en algún framework (y si es Dojo o RequireJS será aún mejor porque las estoy usando;)


Gran pregunta No pude encontrar un ejemplo de una aplicación de código abierto orientada a objetos bien escrita. Tiny MCE era regular, pero no lo consideraría bien escrito: http://www.tinymce.com/

Sin embargo, he escrito un javascript limpio y bien orientado a objetos en el trabajo. Es propietario, así que no puedo compartirlo, pero puedo explicar lo que funcionó para mí para aprender a hacer eso:

1) Lea el tutorial de programación orientado a objetos de JavaScript de mozilla. Su explicación de la herencia de JavaScript es exactamente lo que utiliza el cierre de google. Personalmente creo que lo que Crockford llama pseudoclásico es más fácil de leer y mantener ya que 4 de los otros 5 lenguajes de programación que conozco usan clases (java, c #, python, y php. Perl es el bicho raro aquí sin clases tampoco).

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

2) Lea el libro ''Javascript orientado a objetos'' de Stoyan Stefanov.

3) Tome una base de código de Javascript existente y vuelva a factorizarla en los objetos. Use los consejos en ''Código limpio'' de Robert C. Martin, ya que se aplican a cualquier lenguaje de programación.

4) Estructura tu código para que tenga muchos archivos diferentes, similares a cómo usarías las clases en un idioma con clases.

5) Implemente la inyección de dependencia sin un contenedor IOC creando todos sus objetos en un nivel superior y alimentándolos en los objetos que dependen de ellos.

Hay mucho más, pero espero que este sea un comienzo útil.

Esto es lo que creo que es la forma correcta de implementar la herencia en javascript. esto es de la biblioteca de cierre de google:

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


Hay varias formas de aprender a escribir un buen código JS.

Puedes leer libros. El mejor acerca de la organización del código JS y sobre los patrones comunes, incluida la herencia, son los patrones de JavaScript de Stoyan Stefanov.

Otra buena forma de aprender es mirar el excelente código de otros desarrolladores y usarlo. La mejor biblioteca que he visto desde el punto de organización del código y uso de patrones es Google Closure Library . Es utilizado internamente por Google en la RIA como Gmail Google Docs.


Sí. Hay algunos gurús de JavaScript que han escrito mucho sobre cómo escribir JavaScript, sobre OOP basado en prototipos con JavaScript, incluso sobre cómo se deben hacer sangrías y nombrar variables.

Sin embargo, si está buscando una gran implementación de JavaScript para estudiar como ejemplo, buscaría implementaciones de juegos HTML5. Está prácticamente garantizado que encontrará un ejemplo suficientemente grande y bien escrito que no se minimice.


Si está interesado en los estándares de JavaScript, echa un vistazo a commonJS . Tienen muchas buenas ideas sobre cómo se debe hacer JavaScript.

BravoJS es una buena implementación de módulo para el navegador.

En cuanto a los ejemplos, el código fuente de jQuery se mencionó en los comentarios. jQuery hace un buen trabajo, pero es que también verificaría Narwhal JS para ver ejemplos de cómo se deben hacer las cosas.

Aquí hay un buen libro de patrones de diseño gratuito que encontré útiles JavaScript esencial y jQuery Design Patterns .

No encontrará una solución a su problema y así es como se diseñó JavaScript. Recomendaría experimentar Encuentro que Douglas Crockford tiene muchas ideas geniales, pero eso no significa que deba seguirlo al pie de la letra.




Lo que siempre recomiendo a cualquiera que esté interesado en este tipo de cosas es: SIGA CON LO QUE HACE SU EQUIPO . Si usan camelCase para los métodos, lo usa. Si usan snake_case para variables, lo haces. Si su equipo prefiere espacios sobre pestañas; usalos, usalos a ellos.

Nunca entre en un equipo establecido con cambios de estilo estandarizados porque se ve mejor a menos que esté causando problemas graves.

Si no estás trabajando en un equipo y estás interesado en usar un estilo de codificación; luego use el estilo de las bibliotecas que más usa .

En cuanto a la organización, el cierre es el mejor ... pero para mí, de alguna manera, parece que estoy leyendo JAVA en lugar de javascript. Imagínate.