Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Launch X Node JS Playbook 🚀 de @explorername
# Launch X Node JS Playbook 🚀 de @LuisVelazque

<img width="1247" alt="image" src="https://user-images.githubusercontent.com/17634377/159151704-8949639b-ae5f-405a-a8b8-8d97f3f150cd.png">

Expand Down
30 changes: 30 additions & 0 deletions weekly_mission_1/example1/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// 1. Creación de un objeto con propiedades

let myCar = new Object(); // Creación de un objeto
myCar.make = 'Ford'; // Guardando un valor dentro del objeto creado
myCar.model = 'Mustang';
myCar.year = 1969;

console.log(myCar) // Imprimiendo objeto

// 2. Declaración de un objeto con variables locales y públicas

const myModule = (() => {

// Variables de contexto local
const privateFoo = "Soy un valor privado, solo me usan dentro de este objeto"
const privateBar = [1,2,3,4]
const baz = "Soy un valor que va a ser expuesto"

// Variable para guardar las variables locales
const exported = {
publicFoo: "Valor público, pueden verme desde donde me llamen",
publicBar: "Otro valor público",
publicBaz: baz
}

// Exposición de variables locales
return exported
})()

console.log(myModule)
4 changes: 4 additions & 0 deletions weekly_mission_1/example10/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import MyPokemon from './pokemon.js'

const pikachu = new MyPokemon('Pikachu')
pikachu.sayHello()
13 changes: 13 additions & 0 deletions weekly_mission_1/example10/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "esm-syntax",
"version": "1.0.0",
"description": "",
"main": "main.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
8 changes: 8 additions & 0 deletions weekly_mission_1/example10/pokemon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export default class pokemon {
constructor(name){
this.name=name
}
sayHello (name){
console.log('Mi Pokemon '+this.name+' te saluda')
}
}
18 changes: 18 additions & 0 deletions weekly_mission_1/example2/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// logger.js

// Esta es una función que se guardara en este módulo como info
exports.info = (message) => {
console.log(`info: ${message}`)
}

// Esta es una función que se guardara en este módulo como verbose
exports.verbose = (message) => {
console.log(`verbose: ${message}`)
}

/*
const logger = require('./logger')
logger.info('This is an informational message')
logger.verbose('This is a verbose message')
* */

6 changes: 6 additions & 0 deletions weekly_mission_1/example2/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// node main.js

const logger = require('./logger')

logger.info('This is an informational message')
logger.verbose('This is a verbose message')
14 changes: 14 additions & 0 deletions weekly_mission_1/example3/logger_1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
Esto también es la declaración de una función

module.exports hará que puedas invocar esta función en otro script como:
> const logger = require('./logger')

y usarla como:

> logger("Heeey!")
*/

module.exports = (message) => {
console.log(`info: ${message}`)
}
19 changes: 19 additions & 0 deletions weekly_mission_1/example3/logger_2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

/*
Al exportar una función/objeto así:

> module.exports.verbose

Estaremos exportando el contenido con el nombre `verbose`

module.exports hará que puedas invocar esta función en otro script como:
> const logger = require('./logger')

y usarla como:

> logger.verbose("Heeey!")
*/

module.exports.verbose = (message) => {
console.log(`verbose: ${message}`)
}
9 changes: 9 additions & 0 deletions weekly_mission_1/example3/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
node main.js
*/

const logger1 = require('./logger_1')
const logger2 = require('./logger_2')

logger1('This is an informational message')
logger2.verbose('This is a verbose message')
21 changes: 21 additions & 0 deletions weekly_mission_1/example4/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
class Logger {
constructor(name) {
// this es una variable para referenciar el valor del contexto local de esta clase
this.name = name // Estás variables se le conocen como atributos
}

// método
// this.name es la variable que se guarda en el contexto local
// message es una variable que se le pasa al ejecutar este método
info (message) {
console.log(`[Objeto con nombre: ${this.name}] info: ${message}`)
}

// método
verbose (message) {
console.log(`[Objeto con nombre: ${this.name}] verbose: ${message}`)
}
}

// Esta clase se exporta en este módulo
module.exports = Logger
10 changes: 10 additions & 0 deletions weekly_mission_1/example4/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const Logger = require('./logger') // Invocas el módulo que contiene la clase

// Creación de un objeto
const dbLogger = new Logger('DB') // Creas un objeto nuevo, esto llama por default el constructor de la clase
// invocación del método
dbLogger.info('This is an informational message')

// Creación de otro objeto
const accessLogger = new Logger('ACCESS')
accessLogger.verbose('This is a verbose message')
14 changes: 14 additions & 0 deletions weekly_mission_1/example5/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Logger {
constructor(name){
// Al crear este objeto se guardarán estos valores
this.count = 0
this.name = name
}

log(message) {
this.count++ // se aumenta el contador interno al llamar este método
console.log('[' + this.name + '] ' + message)
}
}

module.exports = new Logger('DEFAULT') // Instanciación del objeto y se exporta
10 changes: 10 additions & 0 deletions weekly_mission_1/example5/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const logger = require('./logger')

// Ya se puede usar directamente el objeto instanciado en el módulo logger
logger.log('This is an informational message')

/*
También pueder instanciar uno nuevo de esta manera:
const customLogger = new logger.constructor('CUSTOM')
customLogger.log('This is an informational message')
*/
14 changes: 14 additions & 0 deletions weekly_mission_1/example6/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Logger {
constructor (name) {
this.count = 0
this.name = name
}

log (message) {
this.count++
console.log('[' + this.name + '] ' + message)
}
}

module.exports = new Logger('DEFAULT') // Nuevo objeto instanciado
module.exports.Logger = Logger // Clase
4 changes: 4 additions & 0 deletions weekly_mission_1/example6/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
require('./patcher') // Llamas este módulo que modifica el objeto instanciado
const logger = require('./logger') // Al llamar el módulo en logger.js te dará el objeto modificado

logger.customMessage()
10 changes: 10 additions & 0 deletions weekly_mission_1/example6/patcher.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Ten en cuenta:
* - require('./logger') te dará el objeto creado
* - require('./logger').Logger te regresará la clase
*
* En este caso estamos agregando una función más al objeto instanciado, no a la clase.
* */
require('./logger').customMessage = function () {
console.log('This is a new functionality')
}
41 changes: 41 additions & 0 deletions weekly_mission_1/example7/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
Este modulo se comporta como si fuera un objeto que contiene todo lo definido

[Module: null prototype] {
DEFAULT_LEVEL: 'info',
LEVELS: { error: 0, debug: 1, warn: 2, data: 3, info: 4, verbose: 5 },
Logger: [class Logger],
log: [Function: log]
}

*/

// exports a function
export function log (message) {
console.log(message)
}

// exports a constant
export const DEFAULT_LEVEL = 'info'

// exports an object
export const LEVELS = {
error: 0,
debug: 1,
warn: 2,
data: 3,
info: 4,
verbose: 5
}

// exports a class
export class Logger {
constructor (name) {
this.name = name
}

log (message) {
console.log(`[${this.name}] ${message}`)
}
}

3 changes: 3 additions & 0 deletions weekly_mission_1/example7/main_2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { log } from './logger.js'

log('Hello world')
4 changes: 4 additions & 0 deletions weekly_mission_1/example7/main_module.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* Importando el módulo */
import * as loggerModule from './logger.js'

console.log(loggerModule)
14 changes: 14 additions & 0 deletions weekly_mission_1/example7/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "esm-syntax",
"version": "1.0.0",
"description": "",
"main": "main.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

15 changes: 15 additions & 0 deletions weekly_mission_1/example8/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
export default nos permite exportar esta clase e importara

import MyLogger from './logger.js'
*/

export default class Logger {
constructor (name) {
this.name = name
}

log (message) {
console.log(`[${this.name}] ${message}`)
}
}
5 changes: 5 additions & 0 deletions weekly_mission_1/example8/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Importando la clase MyLogger
import MyLogger from './logger.js'

const logger = new MyLogger('info')
logger.log('Hello World')
4 changes: 4 additions & 0 deletions weekly_mission_1/example8/main_2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* Importando el módulo */
import * as loggerModule from './logger.js'

console.log(loggerModule)
13 changes: 13 additions & 0 deletions weekly_mission_1/example8/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "esm-syntax",
"version": "1.0.0",
"description": "",
"main": "main.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
18 changes: 18 additions & 0 deletions weekly_mission_1/example9/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const Pokemon = require('./pokemon')

const pikachu = new Pokemon("pikachu")
const bulbasaur = new Pokemon("bulbasaur")
const squirtle = new Pokemon("squirtle")
const charmander = new Pokemon("charmander")

pikachu.sayHello()
pikachu.sayMessage("Heey!")

bulbasaur.sayHello()
bulbasaur.sayMessage("Heey!")

charmander.sayHello()
charmander.sayMessage("Heey!")

squirtle.sayHello()
squirtle.sayMessage("Heey!")
21 changes: 21 additions & 0 deletions weekly_mission_1/example9/pokemon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
class Pokemon {
constructor(name) {
// this es una variable para referenciar el valor del contexto local de esta clase
this.name = name // Estás variables se le conocen como atributos
}

// método
// this.name es la variable que se guarda en el contexto local
// message es una variable que se le pasa al ejecutar este método
sayHello() {
console.log(`Hola yo soy un ${this.name}`)
}

// método
sayMessage(message) {
console.log(`${message}`)
}
}

// Esta clase se exporta en este módulo
module.exports = Pokemon
Loading