CoffeeScript, Backbone.js o SproutCore, ¿cuál debo elegir aprender primero?

Son tres tecnologías diferentes, para tres cosas diferentes, por lo que cuál tiene sentido aprender puede verse afectado por cuál es su próximo proyecto.

SproutCore es y un entorno completo (con jQuery en su núcleo) para crear aplicaciones de estilo de escritorio, es decir, no es para hacer pequeñas modificaciones de JavaScript en su aplicación, como es jQuery, es para crear aplicaciones como Gmail. Tiene soporte para el enlace de datos adecuado (enlazar un control a una propiedad y hacer que se actualice automáticamente cuando se cambia esa propiedad), pruebas de unidad y una capa de datos que recuerda a ActiveRecord. Esencialmente, es a JavaScript lo que Rails es a Ruby. Yehuda Katz (el tipo jQuery and Rails 3) es uno de los principales desarrolladores de SproutCore.

SproutCore es de código abierto, pero es desarrollado activamente por Apple y Strobe Inc (http://techcrunch.com/2010/12/01…) lo que significa que su velocidad de desarrollo es muy alta. Mira esto: https://github.com/sproutcore/sp…

Backbone.js es un marco más pequeño que SproutCore: es esencialmente solo la parte MVC. No ofrece nada que se parezca al poder de los enlaces de SproutCore o DataStore, y no tiene un marco de prueba de unidad incorporado. Sin embargo, es MUCHO más fácil de aprender. En la terminología de Rails, estaría en algún lugar entre Sinatra y Rails.

Editar: Anteriormente tuve una queja sobre coffeescript aquí, pero era más apropiado dividirlo en una pregunta separada. Si lo está buscando, está aquí: ¿Cuáles son las desventajas de usar CoffeeScript?

No te sorprenderá saber que mi respuesta es CoffeeScript. Lo digo porque eres un codificador de Rails, y el mundo de Rails se está moviendo claramente en esa dirección. E incluso si no te conviertes en un converso completo, aprender CoffeeScript te hará un mejor JavaScripter. Te hace pensar más profundamente sobre el funcionamiento interno de JS. Esa, al menos, fue mi experiencia, y parte de lo que me llevó a escribir el libro CoffeeScript para PragProg.

Cabe señalar que CoffeeScript es una capa delgada de azúcar sintáctica sobre JavaScript. Por ejemplo, le permite escribir `y () if x?` Como abreviatura de `if (typeof x! == ‘undefined’ && x! == null) y ();`. No es un marco MVC. No modifica los prototipos ni agrega sus propios objetos a JS. Es 100% compatible con todas las bibliotecas JS. Puede usar cualquier combinación de archivos JS y CoffeeScript en su aplicación Rails.

En cuanto a las otras tecnologías:

Me encanta Backbone.js. Lo uso (con CoffeeScript) en muchos de mis proyectos. Lo principal que hace Backbone es permitirle almacenar sus datos en modelos de modo que pueda 1) vincular devoluciones de llamada para cambiar eventos en esos modelos y 2) sincronizar esos modelos con / desde el servidor (como JSON). Hace algunas otras cosas, pero ese es el punto culminante. Si necesita esa funcionalidad en su aplicación, definitivamente debería usarla. Es una utilidad pequeña y liviana diseñada para complementar las bibliotecas de manipulación DOM como jQuery o Zepto.js.

SproutCore es algo muy diferente: una biblioteca de widgets de gran peso diseñada para que su sitio web se vea y se sienta como una aplicación de escritorio. No lo he usado (aunque sé que algunas personas usan CoffeeScript con él). La razón principal para estar interesado en SproutCore en este momento es, creo, que Yehuda Katz se ha registrado como contribuyente principal, tal como lo hizo con jQuery y Rails. Si desea crear una aplicación web similar a la de un escritorio, definitivamente consulte SproutCore.

Comenzaría por aprender Coffeescript. Aprenderá los conceptos básicos en el marco de un domingo por la tarde y se volverá fluido en un par de días. La mayoría de las personas que lo han probado nunca vuelven.

Backbone es considerablemente más difícil de aprender que Coffeescript, espere un par de días para realmente “entenderlo”. Sin embargo, tiene la ventaja de funcionar tanto con Javascript como con Coffeescript (fue escrito por el mismo autor, Jeremy Ashkenas) y combina muy bien con Coffescript.

Backbone es una muy buena opción para páginas complejas (la búsqueda viene a la mente) en sitios web y como base de aplicaciones web. Lo que me gusta de otras bibliotecas es que solo resuelve un número limitado de problemas, pero lo hace bastante bien.

SproutCore sería el tercero en mi lista. Me gusta mucho lo que están haciendo, pero aprenderlo es un gran compromiso. por lo tanto, si bien puede tener 1 y 2 cubiertos en menos de una semana, necesitará más tiempo para usar SproutCore de manera eficiente.

More Interesting

Cómo crear un sitio web como Eventbrite

¿Cómo procesan JavaScript los navegadores?

Cómo hacer una calculadora básica con JavaScript

¿Cuándo puedo llamarme un experto en HTML o CSS?

¿Cuáles son algunas formas en que uno puede renderizar LaTeX en la página web?

¿Qué haces cuando hay algo mal con tu proyecto de codificación y no puedes entender por qué?

¿Qué debo aprender junto con PHP antes de ir a un trabajo web independiente? Quiero saber un buen recurso para practicar PHP.

¿Qué opciones similares tengo para CMS además de WordPress para mi sitio web personalizado?

Estoy usando una empresa de desarrollo para ayudar a construir una startup. ¡Nunca más! Quiero un cofundador técnico. Tengo un programador a tiempo parcial (no apto para ser cofundador) y un presupuesto de $ 500 / mes + capital. ¿Es esto suficiente para reclutar un buen cofundador técnico?

Cómo incluir un iframe en una etiqueta de script existente

¿Sería C / C ++ un buen lenguaje para mi sitio web para seleccionar registros aleatorios del DB y generar los registros?

¿Cuál es el mejor idioma para crear un chatbot en un sitio web?

¿Cuál es la estructura para crear una serie web sobre superhéroes, de principio a fin?

¿Es posible usar Symfony en el sistema de inicio de sesión / registro pero usar PHP vainilla en el resto del sitio web?

¿$ 43 / hora como contratista W2 sin beneficios equivaldría a un salario decente para un desarrollador front-end con <1 año de experiencia?