Uso de Archivos JavaScript y Componentes Vue en Plantillas .phtml¶
Con MageObsidian Components, integrar archivos JavaScript y componentes Vue en plantillas .phtml es más simple y poderoso gracias a la clase MageObsidian\ModernFrontend\Block\Template.
Esta clase mejorada proporciona métodos para cargar, resolver y renderizar recursos de manera eficiente, manteniendo la consistencia con las convenciones de importación explicadas anteriormente. Importaciones Entre Módulos de Magento
¿Por Qué Usar MageObsidian\ModernFrontend\Block\Template?¶
Esta clase extiende la clase Template de Magento y añade métodos avanzados, entre ellos:
- Resolución dinámica de recursos: Soporta la notación
Vendor_Module::para resolver rutas de archivos. - Integración simplificada con Vue: Renderiza componentes Vue de manera dinámica con propiedades.
- Acceso optimizado a bibliotecas: Permite incluir archivos de bibliotecas o recursos generados por Vite con facilidad.
Funciones Clave¶
1. Resolución de Rutas de Archivos¶
Los archivos se pueden resolver dinámicamente usando el método resolvePathByName(). Este método permite referenciar archivos con la notación Vendor_Module:: o directamente desde temas utilizando Theme::.
Ejemplo:
2. Renderización de Componentes Vue¶
El método renderVueComponent() monta un componente Vue como una isla. En lugar de un <script> en lÃnea por cada llamada, emite un marcador pequeño e inerte que un único bootstrap a nivel de página descubre y monta. Por defecto la isla se hidrata de forma perezosa —solo cuando entra en el viewport—, asà que los componentes por debajo del pliegue no cuestan nada hasta que realmente se necesitan.
Firma
| Parámetro | Descripción |
|---|---|
$componentName |
Componente en notación Vendor_Module::Component (el prefijo components/ está implÃcito). |
$props |
Datos pasados al componente como props de Vue. Se codifican como JSON seguro para atributo; un valor no codificable lanza una excepción en vez de emitir markup roto. |
$eager |
false (por defecto) hidrata cuando el marcador se vuelve visible; true monta de inmediato — úsalo para componentes por encima del pliegue. |
Ejemplo: Renderizar un Componente Vue en una Plantilla .phtml
Esto emite un único marcador, sin script de montaje en lÃnea:
Salida Generada:
Para un componente por encima del pliegue que no deba esperar al viewport, activa el montaje eager:
Nota: El runtime de Vue y el plugin de i18n se cargan una sola vez por página y se comparten entre todas las islas; una página sin islas no carga Vue en absoluto. Consulta Islas Vue para conocer la arquitectura completa y las estrategias
visible/eager.
3. Carga de Archivos de Biblioteca¶
El método getViewLibFileUrl() permite incluir archivos de bibliotecas de forma sencilla. Por ejemplo, puedes cargar un script especÃfico de una biblioteca:
Ejemplo:
Esto asegura consistencia con el proceso de construcción basado en Vite.
4. Archivos Generados por Vite¶
Utiliza el método getViteFileUrl() para cargar archivos generados por Vite, como scripts de entrada o recursos.
Ejemplo:
Ejemplo Completo en una Plantilla .phtml¶
Aquà tienes un ejemplo completo que demuestra múltiples casos de uso:
Buenas Prácticas¶
-
Evita Rutas de Archivos Codificadas
No codifiques rutas directamente. En su lugar, utiliza los métodos del bloque comoresolvePathByName(),getViteFileUrl()ogetViewLibFileUrl()para garantizar una resolución consistente de archivos. -
Pasa Propiedades a los Componentes Vue
Cuando renderices componentes Vue, pasa solo los datos necesarios comopropspara mantener tus componentes flexibles y reutilizables. -
Mantén las Plantillas Limpias
Utiliza los métodos del bloque para encapsular la lógica, enfocando tus plantillas.phtmlen la estructura y presentación.
Beneficios de Este Enfoque¶
-
Resolución Dinámica
Los archivos y componentes se resuelven dinámicamente, respetando sobrescrituras realizadas en los temas. -
Consistencia
Mantiene un enfoque consistente para manejar archivos entre JavaScript, componentes Vue y plantillas. -
Preparado para el Futuro
Al aprovechar Vite y una clase de bloque moderna, tu integración está optimizada para escalabilidad y rendimiento. -
Facilidad de Uso
Simplifica el proceso de inclusión de scripts y componentes, reduciendo la redundancia y los errores.
Próximos Pasos¶
- Aprende más sobre cómo sobrescribir componentes y scripts en la sección Temas.
- Lee Islas Vue para entender la hidratación perezosa y las estrategias
visible/eager.