Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La Propuesta
Luego de abandonar toneladas de ideas de esta forma, decid disear una solucin. La llamo el
proyecto Init (Inicio)( init.js).
El corazn de la idea es tener un simple proyecto que inicie todos los dems, dejar que el
desarrollador o el fundador tcnico tomen esas decisiones al mismo tiempo y recibir una plantilla
apropiada para empezar basada en esas decisiones. Se lo que van a decir los detractores, Una
solucin no puede aplicarse a todos los problemas (Odiadores odiarn). Y puede que estn en lo
cierto. Pero podemos hacer nuestro mejor esfuerzo para crear una solucin aproximada, y creo
que Init se acerca bastante.
Para lograr mejor este objetivo, tenemos que tener algunas ideas claves en mente. Cuando estaba
Pero bajemos un poco la velocidad y preguntmonos: es realmente una buena idea usar JavaScript?
La programacin orientada a objetos sin clases (y sin las interminables herencias de clases)
permite rpido desarrollo (crear objetos, agregar mtodos y usarlos) pero, lo ms importante,
reduce el tiempo de refactorizacin durante tareas de mantenimiento dejando que el
desarrollador modifique instancias de objetos en vez de clases. Esta velocidad y flexibilidad
pavimenta el camino para el desarrollo rpido.
JavaScript es Internet
JavaScript fue diseado para Internet, ha estado aqu desde el principio, y no va a irse. Todos
los intentos por destruirlo han fallado, mira, por ejemplo, la cada de los Applets Java, el
reemplazo de VBScript de Microsoft, TypeScript (que compilaba a JavaScript), y la cada de
Flash en manos del mercado mvil y HTML5. Es imposible reemplazar Javascript sin romper
millones de pginas web, as que nuestro objetivo a largo plazo debera ser el de mejorarlo. Y
no hay nadie mejor para esa tarea que el Technical Committee 39 de ECMA.
Ok, alternativas a JavaScript nacen todos los das, cmo CoffeeScript, TypeScript, y los los
millones de lenguajes que compilan a JavaScript. Esas alternativas pueden ser tiles para
etapas de desarrollo (por medio de mapeos de cdigo fuente), pero fallarn al tratar de
suplantar JavaScript a largo plazo por dos razones: sus comunidades nunca sern ms grandes,
y sus mejores funcionalidades sern adoptadas por el script de ECMA (por ej., JavaScript).
JavaScript no es como un lenguaje ensamblador: es un lenguaje de programacin de alto nivel
con cdigo fuente que puedes entender
Ahora, gracias al proyecto Esprima, puedes
entonces deberas entenderlo.
crear tus propias herramientas para jugar con
JavaScript de extremo a
el cdigo fuente, modificndolo, cambiando
su estilo, agregando comentarios,
extremo: Node.js y MongoDB
instrumentando, y todo de tipo de cosas que
Entonces, esas son las razones para usar
puedas imaginar al jugar con el rbol de
JavaScript. Ahora, voy a usar JavaScript como
Sintaxis Abstracta de tu programa como si
una razn para usar Node.js y MongoDB.
estuvieses jugando con un rbol DOM.
Node.js
Node.js es una plataforma para construir
aplicaciones de red rpidas y escalableseso es
bsicamente lo que dice el sitio de Node.js. Pero
Node.js es ms que eso: es el entorno de
ejecucin preferido por cualquier aplicacin con acceso de E/S en JavaScript. Incluso si no
planeas escribir tu aplicacin del servidor principal con Node.js, puedes usar herramientas
creadas construidas encima de Node.js para mejorar tu proceso de desarrollo. Por
ejemplo: Mocha.js para unit testing, Grunt.jspara tareas de construccin automatizadas, o
incluso Brackets para completar edicin de cdigo.
Entonces, si vas a escribir aplicaciones de JavaScript para servidor o cliente, deberas
familiarizarte con Node.js, porque vas a necesitar usarlo diariamente. Hay algunas
interesantes alternativas), pero ninguna de ellas llega siquiera al 10% de la comunidad de
Node.js.
MongoDB
MongoDB es una base de datos NoSQL basada en documentos que usan JavaScript como su
lenguaje de consultas, permitiendo completar de extremo-a-extremo la plataforma JavaScript.
Pero esa no es siquiera la razn principal para elegir esta base de datos.
MongoDB es una base de datos sin esquema que permite persistir tus objetos de una manera
flexible y por lo tanto adaptarse ms rpidamente a los cambios en los requisitos. Adems, es
altamente escalable y basado en map-reduce, lo cual lo hace adecuado para aplicaciones con
muchos datos. MongoDB es tan flexible que puede ser usado como una base de datos de
documentos sin esquema, un almacn de datos relacional (aunque le faltan transacciones),o
incluso almacenamiento de clave-valor para respuestas de cach.
autenticacin, podemos simplemente conectarlos en cualquier lado que queramos para convertir una
caracterstica sin autenticacin existente en una con autenticacin.
Editor's note: want posts just like this delivered straight to your inbox? Subscribe below to
receive our latest engineering articles.
We will never share your email with any 3rd party or spam you
Should: Tambin usado en BDD, pero prefiero Expect porque Should porque suena
repetitivo con la especificacin de comportamiento _it _(should do something..- eso
debera hacer algo). Ej.:
variable .should.equal (valor) ;
Chai.js se combina perfectamente con Mocha.js. Usando solamente estas dos libreras, puedes
escribir tus test en TDD, BDD, o cualquier estilo imaginable.
Grunt.js:
Grunt.js permite automatizar tareas de construccin, cualquier cosa desde simples archivos
concatenados copiados y pegados, a plantillas precompiladas, estilo compilado de lenguaje
(por ej., SASS y LESS), test unitario (con mocha.js), linting y compresin de cdigo (ej.,
con UglifyJS o Closure Compiler). Puedes agregar tu propia tarea automatizada a Grunt, o
buscar en el registro de Grunt, donde hay cientos y cientos de plugins disponibles (de vuelta,
usando herramientas con grandes comunidades detrs paga bien). Grunt tambin
puede monitorear tus archivos y disparar acciones cuando estos son modificados.
RequireJS:
RequireJS puede sonar como otra forma de cargar modulos con AMD, pero puedo asegurarte
que es mucho ms que eso. Para entender por qu, primero debemos mencionar la idea del
namespacing de modulos (ej., demo.views.hola), lo que evita contaminar el namespace global
envolviendo cada mdulo en su propio namespace. El problema es, estos mdulos no son
reusables: si modificas el namespace de una instancia, ests modificando el namespace de
todas las instancias. En contraste con eso, RequireJS permite definir mdulos reusables desde
el principio. (Adems, te ayudar a adoptar Dependency Injection para evitar que tus modulos
accedan variables globales).
CoverJS:
Cobertura de cdigo es una medida mtrica para evaluar tu testing. Como el nombre implica, te
dice cuanto cdigo est cubierto en tu conjunto de tests actual. CoverJS mide la cobertura de
cdigo de tus tests instrumentando declaraciones (en vez de lneas de cdigo
cmo JSCoverage) y generando una versin instrumentada de tu cdigo. Tambin genera
reportes para alimentar tu servidor de integracin continua.
Por ahora, la idea de fusionar para agregar funcionalidad puede solo ser usada para plantillas de
tecnologa (ej., Backbone, Node, Express). Pero en el futuro, sers capaz de alternar entre back-end