Skip to content

Commit 92b4693

Browse files
committed
codeEditor fix
1 parent 63ebf41 commit 92b4693

File tree

3 files changed

+109
-25
lines changed

3 files changed

+109
-25
lines changed

src/components/CodeEditor.astro

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -40,44 +40,44 @@
4040

4141
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
4242

43-
// Limpiar el contenido del iframe
44-
iframeDoc.open();
45-
iframeDoc.close();
43+
// Limpiar iframe SIN open/close
44+
iframeDoc.body.innerHTML = '';
4645

4746

4847
// Crear un contenedor para los logs
4948
const logContainer = iframeDoc.createElement('div');
5049
logContainer.classList.add('logContainer');
5150
iframeDoc.body.appendChild(logContainer);
5251

53-
// Sobrescribir console.log y console.error en el contexto del iframe
54-
iframe.contentWindow.console.log = function(...args) {
55-
const logMessage = iframeDoc.createElement('div');
56-
logMessage.textContent = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : arg).join(' ');
57-
logContainer.appendChild(logMessage);
58-
};
59-
60-
iframe.contentWindow.console.error = function(...args) {
61-
const errorMessage = iframeDoc.createElement('div');
62-
errorMessage.style.color = 'red'; // Estilo para errores
63-
errorMessage.textContent = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : arg).join(' ');
64-
logContainer.appendChild(errorMessage);
65-
};
66-
67-
68-
// Siempre crear y ejecutar un script para ejecutar el código dentro del iframe
52+
// Script con consola aislada
6953
const script = iframeDoc.createElement('script');
7054
script.textContent = `
71-
(function() {
72-
try {
73-
${code}
74-
} catch (error) {
75-
console.error('Error:', error.message);
55+
(function () {
56+
const console = {
57+
log: (...args) => {
58+
const div = document.createElement('div');
59+
div.textContent = args.map(a =>
60+
typeof a === 'object' ? JSON.stringify(a) : a
61+
).join(' ');
62+
document.querySelector('.logContainer').appendChild(div);
63+
},
64+
error: (...args) => {
65+
const div = document.createElement('div');
66+
div.style.color = 'red';
67+
div.textContent = args.join(' ');
68+
document.querySelector('.logContainer').appendChild(div);
7669
}
70+
};
71+
72+
try {
73+
${code}
74+
} catch (error) {
75+
console.error('Error:', error.message);
76+
}
7777
})();
7878
`;
7979
iframeDoc.body.appendChild(script);
80-
}
80+
}
8181

8282
function restoreCode() {
8383
const codeBlock = document.getElementById('codeBlock');
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
title: Diseño modular
3+
description: ""
4+
pubDate: '01/03/2025'
5+
collection: nodejs
6+
---
7+
8+
# Diseño modular en Node.js
9+
10+
El **diseño modular** es una forma de estructurar aplicaciones dividiéndolas en partes pequeñas, independientes y reutilizables. Cada módulo tiene una **responsabilidad clara**, lo que facilita el mantenimiento, las pruebas y la escalabilidad del proyecto.
11+
12+
En aplicaciones backend con Node.js y Express, el diseño modular es fundamental para evitar archivos gigantes y código difícil de entender.
13+
14+
## Ventajas del diseño modular
15+
- Código más limpio y legible
16+
- Facilita el trabajo en equipo
17+
- Mejora la reutilización
18+
- Permite escalar la aplicación
19+
- Hace los tests más sencillos
20+
21+
## Separación de responsabilidades
22+
Una buena práctica es separar:
23+
- Rutas
24+
- Controladores
25+
- Modelos
26+
- Middlewares
27+
- Servicios
28+
- Configuración
29+
30+
## Ejemplo de estructura modular
31+
```
32+
src/
33+
├── app.js
34+
├── server.js
35+
├── routes/
36+
│ └── users.routes.js
37+
├── controllers/
38+
│ └── users.controller.js
39+
├── models/
40+
│ └── User.model.js
41+
├── middlewares/
42+
│ └── auth.middleware.js
43+
├── services/
44+
│ └── users.service.js
45+
├── config/
46+
│ └── db.js
47+
└── tests/
48+
└── users.test.js
49+
```
50+
51+
Cada carpeta cumple una función concreta y evita mezclar lógica.

src/content/nodejs/express.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: Express
3+
description: ""
4+
pubDate: '02/03/2025'
5+
collection: nodejs
6+
---
7+
8+
# Express
9+
10+
**Express** es un framework minimalista para Node.js que permite crear servidores web y APIs de forma sencilla y flexible.
11+
12+
Es la base de la mayoría de proyectos backend en JavaScript.
13+
14+
## ¿Qué ofrece Express?
15+
- Gestión de rutas HTTP
16+
- Uso de middlewares
17+
- Manejo de peticiones y respuestas
18+
- Integración con bases de datos
19+
- Soporte para APIs REST
20+
21+
## Ejemplo básico de servidor
22+
```js
23+
const express = require("express");
24+
const app = express();
25+
26+
app.get("/health", (req, res) => {
27+
res.json({ status: "OK" });
28+
});
29+
30+
module.exports = app;
31+
```
32+
33+
Express actúa como intermediario entre el cliente y la lógica del servidor.

0 commit comments

Comments
 (0)