Sitio estático de enlaces con varias secciones (Home, UNED, Viajes, Contenido). Ahora optimizado y organizado en módulos JS (ES modules) y datos JSON modulares.
Qué cambió (optimización de estructura):
- Código JS en módulos (ESM) bajo
dist/js/y un punto de entrada únicodist/js/main.js: utils.js(DOM + helpers),theme.js,nav.js,links.js,notices.js,upcoming.js,uned-page.js.- Las páginas HTML cargan:
<script type="module" src="dist/js/main.js"></script>. - Datos JSON modulares organizados por dominio:
data/links/{home,travel,content}.jsondata/links/uned/common.jsonydata/links/uned/subjects/{redes,preda,ic2}.jsondata/activities/general.jsonydata/activities/subjects/{redes,preda}.json
- Compatibilidad: se soportan también
data/links.json(índice unificado) y los ficheros antiguosdata/*-links.json|data/*-activities.jsoncomo fallback.
Estructura relevante:
- index.html, uned.html, travel.html, contenido.html
- data/: ficheros JSON con enlaces y actividades
- assets/: iconos e imágenes
- src/scss/: estilos fuente (parciales +
main.scss) - dist/css/main.css: CSS compilado
- dist/js/: módulos JS (entrypoint
main.js)
- Instala dependencias y compila estilos:
npm install
npm run build:sass- Abre cualquier HTML en el navegador (por ejemplo
index.html). Todo funciona solo con archivos estáticos.
Por defecto, cada página carga su fichero modular correspondiente (auto-inferido):
index.html→data/links/home.jsontravel.html→data/links/travel.jsoncontenido.html→data/links/content.json- Vistas de asignatura UNED:
uned.html#<slug>(p.ej.uned.html#redes,uned.html#preda,uned.html#ic2) consumendata/links/uned/subjects/<slug>.json
Si quieres forzar una clave concreta (para usar el índice unificado o mapear rutas), establece window.LINKS_KEY antes del script:
<script>
window.LINKS_KEY = 'travel';
</script>Datos esperados (enlaces) en ficheros modulares (arrays de objetos):
[{ "title":"...","url":"...","description":"...","icon":"<svg ...>" }]- El mega-menú UNED se genera a partir de
data/uned-subjects.json. - La página
uned.htmlconsume por defecto los ficheros modulares:data/links/uned/common.json,data/links/uned/subjects/<slug>.json,data/activities/{general|subjects/<slug>}.json. - Fallbacks compatibilidad: índice unificado
data/links.jsony ficheros antiguosdata/uned-*-links.json,data/*-links.json,data/*-activities.json.
Nota: la página del calendario ha sido removida en esta migración; las actividades deben definirse en data/activities/* para que aparezcan en los paneles "Próximas actividades".
- Compila SCSS a
dist/css/main.css:
npm install
npm run build:sass-
Sube a GitHub y en Settings → Pages selecciona la rama
mainy la carpeta raíz/. -
index.htmlservirá el sitio; el punto de entrada JS esdist/js/main.jsy los estilos endist/css/main.css.
- Compatibilidad: se soportan tanto estructura modular como índice unificado
data/links.jsony ficheros antiguos (si los mantienes en el repositorio). - No es necesario un “build” de JS; basta con servir los estáticos. Para estilos, usa los scripts de
sassdelpackage.json. - Si más adelante quieres empaquetar,
main.jspuede ser el entrypoint del bundler sin cambiar la estructura de datos.