Spaghetti Stack JS

Ventajas

  • JS en todos lados
  • Fácil de aprender
  • Mucho material online
  • Personal permutable
  • Microservicios
  • Asincrono

Desventajas

  • Mucho material online es basura

 

  • JS tiene muchos defectos
  • Demasiadas herramientas
  • Proceso NodeJS mono-core
  • MongoDB no transaccional
  • Bubble up de errores
  • Callback of hell
  • Asincrono

Asincronismo JS

PHP

echo "1";

sleep(5);

echo "2";

JS

console.log("1");

setTimeout(function(){

    console.log("2");

}, 5000);

console.log("3");

Event Loop

https://youtu.be/8aGhZQkoFbQ

NodeJS & NPM

Requerimientos Windows:

  • Python 2.7.x
  • Visual Studio 2013 C++
  • Agregar a PATH Python y carpeta bin de modulos

 

Consejos S.O. NO Windows:

  • Mover carpeta de módulos globales a home

 

Versiones

ExpressJS

Framework simplista

Servidor web

Middlewares imperativos

"Evitar GZIP"

Pagina oficial confiable

 

http://expressjs.com/

ExpressJS

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

MongoDB

Mongoose

 

Inicializar

 

TokuMX

MongoDB

var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test');

 

var Cat = mongoose.model('Cat', { name: String });

 

var kitty = new Cat({ name: 'Zildjian' }); kitty.save(function (err) {

    if (err) // ...

    console.log('meow');

});

Task Runners

Gulp *

 

Grunt

 

Webpack

AngularJS

FULL AJAX SPA

 

Google Feedback

  • 6 meses, 3 devs, 17k lineas de codigo

  • 3 meses, 1 dev, 1.5k lineas de codigo

 

egghead.io

ng-book

john papa styleguide

 

Bluebird

var fs = require("fs");
fs.readFile("name", "utf8", function(err, data) {

});

 

var fs = Promise.promisifyAll(require("fs"));
fs.readFileAsync("name", "utf8").then(function(data) {

});

 

//Promise.method()

TypeScript

POO

Tipos

Import / Export

Futurefill

 

Best Practices

ng-inx

bower

lodash

código agnóstico

protractor + karma + jasmine

yeoman: gulp-angular && meanjs

Spaghetti JS

By Heber López

Spaghetti JS

  • 275