Avalados por :

Diferencia entre sap.ui.define, sap.ui.require y jQuery.sap.require en SAP UI5: Ejemplo y comparación detallada

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 6 Vistas
0
Cargando...

Hola,

¿Alguien podría decirme la diferencia exacta entre sap.ui.define, sap.ui.require y jQuery.sap.require en SAP UI5 con un ejemplo?

Saludos,

Alagar

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Hola

Utiliza sap.ui.define para controladores y todos los demás módulos de JavaScript para definir un espacio de nombres global. Con el espacio de nombres, el objeto puede ser referenciado en toda la aplicación.

Utiliza sap.ui.require para cargar dependencias de forma asíncrona pero sin declarar un espacio de nombres, por ejemplo, código que solo necesita ser ejecutado, pero no necesita ser llamado desde otro código.

Saludos

Ushalekha.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

en la documentación de sap.ui.define (https://sapui5.netweaver.ondemand.com/1.52.29/#/api/sap.ui/methods/sap.ui.define) hay una parte que menciona la diferencia:

Diferencias con el AMD Estándar

La implementación actual de sap.ui.define difiere de la especificación AMD (https://github.com/amdjs/amdjs-api) o de cargadores AMD concretos como requireJS en varios aspectos: El nombre sap.ui.define es diferente al simple define. Esto tiene dos razones: primero, evita la impresión de que sap.ui.define es una implementación exacta de un cargador AMD. Y segundo, permite la coexistencia de un cargador AMD (por ejemplo, requireJS) y sap.ui.define en una aplicación siempre y cuando UI5 o las aplicaciones que usan UI5 no estén completamente preparadas para ejecutarse con un cargador AMD. Ten en cuenta que la diferencia en los nombres de las API también implica que el cargador de UI5 no se puede utilizar para cargar módulos 'reales' AMD, ya que esperan que los métodos define y require estén disponibles. Los módulos que utilizan la sintaxis de Definición de Módulo Unificado (UMD) pueden cargarse, pero solo cuando no hay un cargador AMD presente o cuando exponen su exportación también en el espacio de nombres global, incluso cuando hay un cargador AMD presente (como hace jQuery) sap.ui.define carga actualmente módulos con llamadas XHR síncronas. Básicamente, esto es un tributo a la historia síncrona de UI5. PERO: la carga de dependencias síncronas y la ejecución de fábricas explícitamente no forman parte del contrato de sap.ui.define. Por el contrario, ya está claro y planeado que la carga asíncrona se implementará, al menos como una alternativa si no como la única implementación. Consulta también la sección Contrato Asíncrono arriba. Las aplicaciones que necesiten garantizar la carga síncrona de dependencias DEBEN utilizar la antigua API jQuery.sap.require. sap.ui.define no admite complementos para usar otros tipos de archivos, formatos o protocolos. No está previsto admitir esto en el futuro. sap.ui.define no admite URL absolutas como nombres de módulos (dependencias) ni permite nombres de módulos que comiencen con una barra diagonal. Para hacer referencia a un módulo en una URL absoluta, se puede registrar una raíz de recurso que apunte a esa URL (o a un prefijo de la misma). sap.ui.define no admite el 'azúcar' de requireJS donde las declaraciones de dependencias de estilo CommonJS usando sap.ui.require("algo") se convierten automáticamente en dependencias de sap.ui.define antes de ejecutar la función de fábrica.

También, para información adicional:

- JQuery.sap está obsoleto desde la versión 1.58 (https://sapui5.hana.ondemand.com/#/api/jQuery.sap)

Saludos

Fabrice

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
TL;DR:
  • Use sap.ui.define to define a new module.
  • Use sap.ui.require just to require existing module(s), es decir, sin definir uno nuevo.
  • jQuery.sap.require: no. Simplemente no lo hagas.

______

Los siguientes recursos proporcionan explicaciones completas con ejemplos:

Después de leer cuidadosamente esos recursos, avísanos si algo aún no está claro. Ampliaré esta respuesta en consecuencia.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?