Skip to content

Latest commit

 

History

History
126 lines (99 loc) · 7.11 KB

README-es.md

File metadata and controls

126 lines (99 loc) · 7.11 KB

JavaScript and Node.js tooling

Table of Contents generated with DocToc

Una lista opinionada de recursos para el desarollo en JavaScript y Node.js. Para leer la versión en inglés ingresá acá.

Editor

Hay bastantes alternativas que ofrecen syntax highlighting, plugins y son considerablemente livianos:

La última opción, Cloud9, es un editor web pero definitivamente merece un vistazo.

Sublime Text 3

Personalmente prefiero Sublime ya que es muy liviano y altamente personalizable. Incluso podés agregar un plugin llamado Package Control que simplifica la instalación y desinstalación de cualquier otro plugin que quieras agregar. Luego de instalarlo, apretando Ctrl+Shift+p debería aparecer una opción nueva que dice "Install Package".

IDE

Hasta el momento no trabajé con ningún IDE en especial, pero si tuve la oportunidad de probar Webstorm y lo recomiendo bastante para aquellos acostumbrados a trabajar con IDEs. Tené en cuenta que el consumo de recursos (tanto en memoria en general, y en CPU cuando analiza la solución) es bastante superior al de cualquier otro editor mencionado previamente.

Usando diferentes versiones de node

Muchas veces resulta útil tener soporte multi-versión de Node ya que algunos proyectos pueden funcionar en las versiones 0.12 o 0.10 y otros únicamente en 0.8. La idea de tener varias instalaciones manuales tampoco es muy agradable. NVM es una gran herramienta para esos casos y también tiene soporte para io.js.

Linter

Olvidate de checkear manualmente todos los paréntesis que abrís o, incluso peor, tener que encontrarte con errores de sintaxis cuando tu proceso se ejecuta. Los linters están para ayudarte en estos casos. Dos buenas opciones son JSHint y ESLint. Personalmente prefiero ESLint ya que ofrece una configuración mucho más granular.

Agregando tu linter a Sublime Text

Instalá (fijate cómo en acá) el paquete SublimeLinter y después instalá el paquete correspondiente al linter de tu elección (SublimeLinter-jshint or SublimeLinter-contrib-eslint). Tal vez debas cerrar y volver a abrir Sublime para que los cambios tomen efecto.

Tabs y formato

Chequeando por espacios antes de palabras reservadas o después de cada paréntesis manualmente es una pérdida de tiempo. Lo mismo aplica a indentar manualmente las líneas de código, incluso las que copiás y pegás. JavaScript Beautify es una genial herramienta para resolver estos casos manualmente y también es configurable a tu estilo de programación. Instlá el paquete en Sublime Text y luego deberías poder ejecutarlo presionando Ctrl+Alt+f.

Administrador de procesos

Si tu aplicación dispara alguna uncaught exception, lo más probable es que no quieras iniciar la aplicación nuevamente de una forma manual. Las siguientes opciones reiniciarán tu proceso si sucede algo malo:

En el caso de supervisor, no solo reinicia tu aplicación ante algún error no atrapado, sino que también reinicia la aplicación si modificás cualquier archivo de código de tu server para que las modificaciones se apliquen.

Las primeras tres opciones son simples y sólo apuntan a una funcionalidad específica, mientras que PM2 ofrece muchas otras funcionalidades cómo monitoreo de CPU, herramientas de log y balanceo de carga.

Debugging

Si te es familiar, encontrarás la interfaz de debugging nativa de familiar de alguna forma (node debug app.js). Para una interfaz gráfica de debugging podés utilizar node-inspector o iron-node. Mientras node-inspector existe hace un tiempo, iron-node es considerablemente nuevo y, lo más importante, utilizan diferentes enfoques técnicos.

node-inspector

node-inspector abrirá una tab de Google Chrome en la cuál podés utilizar las Chrome Dev Tools para debuggear tu aplicación. Básicamente va a ejecutar tu aplicación Node y atachar los eventos entre tu proceso y las Dev Tools de Chrome.

iron-node

iron-node está utilizando electron, lo cual le dá una sensación de livianez y una carga inicial más rápida. Por esa razón, ejecutará con su propia instalación de Node (io.js) y tendrá cómo resultado una compatibilidad con los módulos nativos un poco engorrosa.

Platforms as a Service

Existen varias soluciones que incluyen instancias con la cuenta gratuita cómo:

Continuous Integration

Hay varias opciones que incluyen servicios gratuitos para proyectos Open Source cómo:


Contributions and suggestions are welcome! Just open an issue or a pull request.