{"id":3027,"date":"2014-07-14T11:58:37","date_gmt":"2014-07-14T16:28:37","guid":{"rendered":"https:\/\/skatox.com\/blog\/?p=3027"},"modified":"2019-10-17T09:59:19","modified_gmt":"2019-10-17T13:59:19","slug":"desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs","status":"publish","type":"post","link":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/","title":{"rendered":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)"},"content":{"rendered":"<p>Hace unas semanas, elaborando un sistema interno para <span class=\"removed_link\" title=\"https:\/\/oja.la\">Oja.la<\/span> tuve la libertad de escoger la plataforma a desarrollar y como este a\u00f1o me hab\u00eda decidido a realizar una aplicaci\u00f3n web escrita 100% en Javascript empec\u00e9 a investigar sobre como empezar con la plataforma\u00a0 MEAN (<a title=\"P\u00e1gina de MongoDB\" href=\"https:\/\/www.mongodb.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mongo<\/a>, <a title=\"ExpressJS\" href=\"https:\/\/expressjs.com\/\">Express<\/a>, <a title=\"P\u00e1gina de AngularJS\" href=\"https:\/\/angularjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Angular <\/a>y <a title=\"P\u00e1gina de NodeJS \" href=\"https:\/\/nodejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">NodeJS<\/a>), para quienes no la conocen, es como LAMP (Linux, Apache, MySQL y PHP) pero orientada a usar JS tanto en frontend como en el backend. Investigando consegu\u00ed <a title=\"Framework de desarrollo web con Javascript\" href=\"https:\/\/meanjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">MEAN JS<\/a>, un framework para desarrollar bajo esta plataforma.<\/p>\n<h3>Instalaci\u00f3n<\/h3>\n<p>Al momento de iniciar el proyecto, no sab\u00eda utilizar Express ni Mongo, respecto a NodeJS s\u00f3lo hab\u00eda hecho unos experimentos sencillos para ver como funcionaba, pero ya ten\u00eda experiencia en AngularJS y herramientas como: Yeoman, Grunt, Bower y NPM. Por ello, la instalaci\u00f3n de este framework me pareci\u00f3 muy sencilla: clonar el repositorio y luego mediante bower instalar todas las dependencias autom\u00e1ticamente. Solo realic\u00e9 algunos cambios para evitar actualizar versiones no estables de librer\u00edas (no me gusta actualizar\u00a0 en pleno desarrollo para evitar incompatibilidades con funcionalidades ya escritas) y eliminar cosas innecesarias para el proyecto (como autenticaci\u00f3n usando redes sociales).<\/p>\n<h3>Esqueleto inicial<\/h3>\n<p>La forma en como est\u00e1 estructurado me ha gustado mucho, la separaci\u00f3n del backend y frontend se hace notable. Respecto a Express,\u00a0 la estructura es muy sencilla, principalmente se divide en las carpetas: models (los objetos que permiten se comunican con la BD), controllers (donde se guarda la l\u00f3gica del proceso), routes (maneja las rutas de las peticiones del servicio web), views (las vistas a mostrar desde el servidor, las cuales son diferentes de las vistas generadas en el frontend).<\/p>\n<p>En la parte p\u00fablica se trabaja como cualquier aplicaci\u00f3n de Angular, se crean carpetas por cada m\u00f3dulo a desarrollar, por defecto vienen incluidas 2: auth y system. La primera es el m\u00f3dulo de autenticaci\u00f3n que trae MEAN.io para permitir identificarse utilizando redes sociales y la segunda, donde va la aplicaci\u00f3n como tal. Tambi\u00e9n se incluyen los archivos para manejar las dependencias del proyecto usando npm, bower y se incluye un archivo de Grunt.<\/p>\n<p>Este \u00faltimo, trae configuraciones para montar un servidor: de desarrollo, pruebas y producci\u00f3n. Cada uno de ellos tiene su propia\u00a0 configuraci\u00f3n, permiti\u00e9ndote trabajar con diferentes bases de datos, bibliotecas comprimidas solo en la versi\u00f3n de producci\u00f3n y pruebas. Me pareci\u00f3 raro que no inclu\u00eda la tarea <a href=\"https:\/\/github.com\/btford\/grunt-ngmin\" target=\"_blank\" rel=\"noopener noreferrer\">grunt-ngmin, <\/a>pues permite facilitar la compresi\u00f3n de archivos JS de AngularJS.<\/p>\n<figure id=\"attachment_3038\" aria-describedby=\"caption-attachment-3038\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a  href=\"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio.png\" data-rel=\"lightbox-gallery-0\" data-rl_title=\"Logo de Mean.io\" data-rl_caption=\"Logo de Mean.io, ch\u00e9vere que sea una chica ninja\" title=\"Logo de Mean.io\"><img decoding=\"async\" class=\"size-medium wp-image-3038\" src=\"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio-500x297.png\" alt=\"Logo de Mean.io\" width=\"500\" height=\"297\" \/><\/a><figcaption id=\"caption-attachment-3038\" class=\"wp-caption-text\">Logo de Mean.io, ch\u00e9vere que sea una chica ninja<\/figcaption><\/figure>\n<h3>Desarrollo<\/h3>\n<p>El desarrollo de la aplicaci\u00f3n se me hizo f\u00e1cil gracias a esta plantilla base, si nunca has desarrollado una aplicaci\u00f3n bajo este modelo, te recomiendo iniciarte con MEAN.io. Lo \u00fanico extra\u00f1o es que generalmente en otras plataformas el c\u00f3digo de backend es diferente al de frontend, permitiendo determinar f\u00e1cilmente la ubicaci\u00f3n del c\u00f3digo que estas viendo, como aqu\u00ed todo es JS a veces debes mirar la ruta para ver si estas en frontend o backend, adem\u00e1s, probablemente llames a los modelos de\u00a0Express y Angular con el mismo nombre, confundiendo a veces la apertura de archivos.<\/p>\n<p>La desventajas que vi con esta plataforma fue: la poca documentaci\u00f3n debido a su poco tiempo de disponibilidad e incompatibilidad para navegadores antiguos (Android 2.3, IE 8, entre otros), s\u00e9 de la disminuci\u00f3n de la cuota de mercado de estos navegadores, pero a\u00fan existen clientes\/usuarios que lo utilizan y en el ambiente empresarial se les debe dar soporte. Y finalmente, no me gust\u00f3 mucho trabajar con MongoDB, es muy ch\u00e9vere almacenar los objetos en JSON y la lectura se hace r\u00e1pida, pero no s\u00e9 si es por mi a\u00f1os utilizando BD relacionales pero la falta de restricciones de dise\u00f1o o tanta libertad de almacenar lo que se desee all\u00ed, me parece que puede crear da\u00f1os en la integridad de datos en el futuro. Tal vez porque estoy acostumbrado a manejar toda la validaci\u00f3n de la data en la BD y no en la aplicaci\u00f3n, me pareci\u00f3 inseguro que con MongoDB toda la validaci\u00f3n se hace en la aplicaci\u00f3n (si me equivoco, por favor me lo aclaran en los comentarios).<\/p>\n<h3>Recomendaciones<\/h3>\n<p>Te recomiendo utilizar Mean.io si deseas hacer una aplicaci\u00f3n bajo esta plataforma en poco tiempo, realmente es sencilla de usar <strong>si tienes experiencia desarrollando aplicaciones web con Javascript<\/strong>. Probablemente la curva de aprendizaje para un novato sea fuerte pero vale la pena el esfuerzo. Si deseas algo mas sencillo o simple (sin sacrificar calidad), puedes probar <a title=\"MeanJS\" href=\"https:\/\/meanjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mean.JS<\/a> un fork realizado por el autor de Mean.io para mejorar algunos problemas de dise\u00f1o de la plataforma.<\/p>\n<p><em><strong>Actualizaci\u00f3n al 17\/10\/2019:<\/strong> El proyecto ha migrado a su fork MeanJS, realizado por el mismo autor del proyecto.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace unas semanas, elaborando un sistema interno para Oja.la tuve la libertad de escoger la plataforma a desarrollar y como este a\u00f1o me hab\u00eda decidido&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/\">Seguir leyendo<span class=\"screen-reader-text\">Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[549,716,892,582],"tags":[],"class_list":["post-3027","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","category-todo-lo-relacionado-al-desarrollo-de-software","category-javascript-todo-lo-relacionado-al-desarrollo-de-software","category-planetas-linux","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox\" \/>\n<meta property=\"og:description\" content=\"Hace unas semanas, elaborando un sistema interno para Oja.la tuve la libertad de escoger la plataforma a desarrollar y como este a\u00f1o me hab\u00eda decidido&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Skatox\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-14T16:28:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-17T13:59:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio-500x297.png\" \/>\n<meta name=\"author\" content=\"Miguel Useche\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@skatox\" \/>\n<meta name=\"twitter:site\" content=\"@skatox\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Miguel Useche\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/\"},\"author\":{\"name\":\"Miguel Useche\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\"},\"headline\":\"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)\",\"datePublished\":\"2014-07-14T16:28:37+00:00\",\"dateModified\":\"2019-10-17T13:59:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/\"},\"wordCount\":841,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2014\\\/07\\\/meanio-500x297.png\",\"articleSection\":[\"Desarrollo web\",\"Desarrollo y Programaci\u00f3n\",\"Javascript\",\"Planetas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/\",\"name\":\"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2014\\\/07\\\/meanio-500x297.png\",\"datePublished\":\"2014-07-14T16:28:37+00:00\",\"dateModified\":\"2019-10-17T13:59:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2014\\\/07\\\/meanio.png\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2014\\\/07\\\/meanio.png\",\"width\":583,\"height\":347,\"caption\":\"Logo de Mean.io, ch\u00e9vere que sea una chica ninja\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2014\\\/07\\\/14\\\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"name\":\"El blog de Skatox\",\"description\":\"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres\",\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/skatox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\",\"name\":\"El blog de Skatox\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"width\":218,\"height\":218,\"caption\":\"El blog de Skatox\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ElWeblogdeSkatox\\\/\",\"https:\\\/\\\/x.com\\\/skatox\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/skatox\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/MiguelAngelUsecheCastro\",\"https:\\\/\\\/x.com\\\/skatox\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\",\"name\":\"Miguel Useche\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187\",\"caption\":\"Miguel Useche\"},\"sameAs\":[\"https:\\\/\\\/skatox.com\",\"https:\\\/\\\/x.com\\\/skatox\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/","og_locale":"es_ES","og_type":"article","og_title":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox","og_description":"Hace unas semanas, elaborando un sistema interno para Oja.la tuve la libertad de escoger la plataforma a desarrollar y como este a\u00f1o me hab\u00eda decidido&#8230;","og_url":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/","og_site_name":"El blog de Skatox","article_publisher":"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","article_published_time":"2014-07-14T16:28:37+00:00","article_modified_time":"2019-10-17T13:59:19+00:00","og_image":[{"url":"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio-500x297.png","type":"","width":"","height":""}],"author":"Miguel Useche","twitter_card":"summary_large_image","twitter_creator":"@skatox","twitter_site":"@skatox","twitter_misc":{"Escrito por":"Miguel Useche","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#article","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/"},"author":{"name":"Miguel Useche","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba"},"headline":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)","datePublished":"2014-07-14T16:28:37+00:00","dateModified":"2019-10-17T13:59:19+00:00","mainEntityOfPage":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/"},"wordCount":841,"commentCount":4,"publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"image":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio-500x297.png","articleSection":["Desarrollo web","Desarrollo y Programaci\u00f3n","Javascript","Planetas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/","url":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/","name":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS) - El blog de Skatox","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio-500x297.png","datePublished":"2014-07-14T16:28:37+00:00","dateModified":"2019-10-17T13:59:19+00:00","breadcrumb":{"@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#primaryimage","url":"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio.png","contentUrl":"https:\/\/skatox.com\/blog\/images\/2014\/07\/meanio.png","width":583,"height":347,"caption":"Logo de Mean.io, ch\u00e9vere que sea una chica ninja"},{"@type":"BreadcrumbList","@id":"https:\/\/skatox.com\/blog\/2014\/07\/14\/desarrollo-de-aplicaciones-web-con-mean-io-mongo-express-angular-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/skatox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)"}]},{"@type":"WebSite","@id":"https:\/\/skatox.com\/blog\/#website","url":"https:\/\/skatox.com\/blog\/","name":"El blog de Skatox","description":"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres","publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/skatox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/skatox.com\/blog\/#organization","name":"El blog de Skatox","url":"https:\/\/skatox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","contentUrl":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","width":218,"height":218,"caption":"El blog de Skatox"},"image":{"@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","https:\/\/x.com\/skatox","https:\/\/www.linkedin.com\/in\/skatox\/","https:\/\/www.youtube.com\/c\/MiguelAngelUsecheCastro","https:\/\/x.com\/skatox\/"]},{"@type":"Person","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba","name":"Miguel Useche","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187","url":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187","contentUrl":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1776390187","caption":"Miguel Useche"},"sameAs":["https:\/\/skatox.com","https:\/\/x.com\/skatox"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":4944,"url":"https:\/\/skatox.com\/blog\/2025\/04\/07\/documental-sobre-la-creacion-de-angular\/","url_meta":{"origin":3027,"position":0},"title":"Documental sobre la creaci\u00f3n de Angular","author":"Miguel Useche","date":"7 de abril de 2025","format":false,"excerpt":"De nuevo Honeypot nos sorprende con un nuevo documental sobre la creaci\u00f3n de Angular. El cual nos narra desde sus inicios en Google hasta su evoluci\u00f3n como uno de los frameworks m\u00e1s utilizados en el desarrollo web de gran calidad, esta vez le toca a Angular, el famoso framework creado\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/cRC9DlH45lA\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4682,"url":"https:\/\/skatox.com\/blog\/2023\/09\/25\/documental-de-la-creacion-de-typescript\/","url_meta":{"origin":3027,"position":1},"title":"Documental de la creaci\u00f3n  de TypeScript","author":"Miguel Useche","date":"25 de septiembre de 2023","format":false,"excerpt":"TypeScript Origins: The Documentary es un documental creado por Keyboard Stories que explora el proceso de creaci\u00f3n de TypeScript. Lo m\u00e1s me gust\u00f3 de ese documental, es que cuenta con comentarios de sus creadores y de las personas involucradas en su desarrollo, presentaci\u00f3n y difusi\u00f3n, ofreciendo una visi\u00f3n completa de\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/WL\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1990,"url":"https:\/\/skatox.com\/blog\/2010\/08\/08\/secrets-of-the-javascript-ninja-secretos-del-ninja-javascript\/","url_meta":{"origin":3027,"position":2},"title":"Secrets of the JavaScript Ninja (Secretos del Ninja Javascript)","author":"Miguel Useche","date":"8 de agosto de 2010","format":false,"excerpt":"Secrets of the JavaScript Ninja, es un libro escrito por el famoso John Resig, (Si eres un desarrollador web deber\u00edas saber quien es) creador de jQuery, la grandiosa librer\u00eda Javascript que facilita enormemente el desarrollo con Javascript. Hace unos d\u00edas lo termin\u00e9 de leer y me gust\u00f3 mucho, me parece\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/ejohn.org\/files\/ninja2.sm.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3181,"url":"https:\/\/skatox.com\/blog\/2015\/08\/31\/cloud-9-entorno-de-desarrollo-en-la-nube\/","url_meta":{"origin":3027,"position":3},"title":"Cloud 9 un entorno de desarrollo en la nube","author":"Miguel Useche","date":"31 de agosto de 2015","format":false,"excerpt":"Hace unas semanas debido a una fuerte gripe, me toc\u00f3 trabajar en casa para un trabajo que deb\u00eda hacer una oficina donde ten\u00eda mi computadora con todo el entorno de desarrollo configurado. Sin embargo en la organizaci\u00f3n ten\u00edan configurado el servicio Cloud9 para poder trabajar remotamente. Cloud9 es un completo\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"Entorno de desarrollo de Cloud9","src":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/Cloud9-600x277.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/Cloud9-600x277.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/Cloud9-600x277.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":4786,"url":"https:\/\/skatox.com\/blog\/2024\/11\/04\/mi-experiencia-en-el-cityjs-medellin-2024\/","url_meta":{"origin":3027,"position":4},"title":"Mi experiencia en el CityJS Medell\u00edn 2024","author":"Miguel Useche","date":"4 de noviembre de 2024","format":false,"excerpt":"CityJS es un conjunto de conferencias que se realizan en diversas partes del mundo para reforzar conocimientos sobre Javascript, Typescript y NodeJS. Este a\u00f1o se realiz\u00f3 una edici\u00f3n en Medell\u00edn y tuve la oportunidad de participar como ponente. Aqu\u00ed te comparto mi experiencia durante los dos d\u00edas del evento. Primer\u2026","rel":"","context":"En \u00abConferencias \/ Charlas\u00bb","block_context":{"text":"Conferencias \/ Charlas","link":"https:\/\/skatox.com\/blog\/category\/conferencias-charlas\/"},"img":{"alt_text":"Skatox frente al pend\u00f3n del evento","src":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/11\/01-Clasica-Foto-Frente-al-Stand-150x150.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/11\/01-Clasica-Foto-Frente-al-Stand-150x150.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/11\/01-Clasica-Foto-Frente-al-Stand-150x150.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/11\/01-Clasica-Foto-Frente-al-Stand-150x150.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":5318,"url":"https:\/\/skatox.com\/blog\/2025\/11\/28\/como-corregi-una-vulnerabilidad-en-mi-plugin-js-archive-list-tras-un-reporte-de-wordfence\/","url_meta":{"origin":3027,"position":5},"title":"C\u00f3mo correg\u00ed una vulnerabilidad en mi plugin JS Archive List tras un reporte de WordFence","author":"Miguel Useche","date":"28 de noviembre de 2025","format":false,"excerpt":"JS Archive List es un plugin que cre\u00e9 hace m\u00e1s de una d\u00e9cada para mostrar archivos de entradas de WordPress en un formato m\u00e1s limpio y din\u00e1mico usando JavaScript (inicialmente era con JQuery). Pues hace unas semanas recib\u00ed un correo de un grupo de hackers y del equipo de Wordfence\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"https:\/\/skatox.com\/blog\/images\/2025\/11\/image-1.avif","width":350,"height":200,"srcset":"https:\/\/skatox.com\/blog\/images\/2025\/11\/image-1.avif 1x, https:\/\/skatox.com\/blog\/images\/2025\/11\/image-1.avif 1.5x, https:\/\/skatox.com\/blog\/images\/2025\/11\/image-1.avif 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/3027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/comments?post=3027"}],"version-history":[{"count":0,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/3027\/revisions"}],"wp:attachment":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/media?parent=3027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/categories?post=3027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/tags?post=3027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}