Guía de migración: Smarty a Vue.js/TypeScript
omegaUp está migrando de plantillas Smarty a componentes modernos de Vue.js con TypeScript.
Estrategia de migración
Estado actual
- Antiguo: Plantillas Smarty (archivos
.tpl) - Nuevo: componentes Vue.js (archivos
.vue) + TypeScript
Proceso de migración
- Identificar plantilla: busque la plantilla de Smarty para migrar
- Crear componente Vue: Cree un componente Vue equivalente
- Actualizar controladores: modifique PHP para devolver JSON en lugar de representar la plantilla
- Actualizar rutas: cambiar rutas para servir el componente Vue
- Prueba: asegúrese de que la funcionalidad coincida con la original
- Eliminar plantilla antigua: elimine la plantilla Smarty después de la verificación
Directrices
Estructura de plantilla
Plantilla inteligente:
{include file='header.tpl'}
<div class="problem">
<h1>{$problem.title}</h1>
<p>{$problem.description}</p>
</div>
{include file='footer.tpl'}
<template>
<div class="problem">
<h1>{% raw %}{{ problem.title }}{% endraw %}</h1>
<p>{% raw %}{{ problem.description }}{% endraw %}</p>
</div>
</template>
<script lang="ts">
import { Vue, Component, Prop } from 'vue-property-decorator';
@Component
export default class ProblemView extends Vue {
@Prop({ required: true })
problem!: Problem;
}
</script>
Cambios en la API
Los controladores deberían devolver JSON en lugar de representar plantillas:
// ❌ Old: Render template
return [
'smarty' => true,
'template' => 'problem.tpl',
'problem' => $problem,
];
// ✅ New: Return JSON
return [
'status' => 'ok',
'problem' => $problem,
];
Documentación relacionada
- Pautas de codificación - Estándares Vue.js
- Guía de componentes - Desarrollo de componentes
- Arquitectura Frontend - Estructura Frontend