Avalados por :

Diferença entre sap.ui.define, sap.ui.require e jQuery.sap.require no SAP UI5: Exemplo e comparação detalhada.

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

Olá,

Alguém poderia me dizer a diferença exata entre sap.ui.define, sap.ui.require e jQuery.sap.require no SAP UI5 com um exemplo?

Saudações,

Alagar

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

3 Respuestas

0
Cargando...

Olá

Utilize sap.ui.define para controladores e todos os outros módulos JavaScript para definir um espaço de nomes global. Com o espaço de nomes, o objeto pode ser referenciado em toda a aplicação.

Utilize sap.ui.require para carregar dependências de forma assíncrona, mas sem declarar um espaço de nomes, por exemplo, código que só precisa ser executado, mas não precisa ser chamado por outro código.

Saudações

Ushalekha.

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

Olá,

Na documentação do sap.ui.define (https://sapui5.netweaver.ondemand.com/1.52.29/#/api/sap.ui/methods/sap.ui.define) há uma parte que menciona a diferença:

Diferenças com o Padrão AMD

A implementação atual do sap.ui.define difere da especificação AMD (https://github.com/amdjs/amdjs-api) ou de carregadores AMD específicos como requireJS em vários aspectos: O nome sap.ui.define é diferente do simples define. Isso tem duas razões: primeiro, evita a impressão de que sap.ui.define é uma implementação exata de um carregador AMD. E segundo, permite a coexistência de um carregador AMD (por exemplo, requireJS) e sap.ui.define em uma aplicação sempre que o UI5 ou as aplicações que usam o UI5 não estiverem totalmente preparadas para serem executadas com um carregador AMD. Note que a diferença nos nomes das APIs também implica que o carregador do UI5 não pode ser usado para carregar módulos 'reais' AMD, pois esperam que os métodos define e require estejam disponíveis. Módulos que utilizam a sintaxe de Definição de Módulo Unificado (UMD) podem ser carregados, mas apenas quando não há um carregador AMD presente ou quando expõem sua exportação também no espaço de nomes global, mesmo quando há um carregador AMD presente (como faz o jQuery) sap.ui.define atualmente carrega módulos com chamadas XHR síncronas. Basicamente, isso é um tributo à história síncrona do UI5. MAS: o carregamento de dependências síncronas e a execução de fábricas explicitamente não fazem parte do contrato do sap.ui.define. Pelo contrário, já está claro e planejado que o carregamento assíncrono será implementado, pelo menos como uma alternativa se não como a única implementação. Consulte também a seção Contrato Assíncrono acima. Aplicações que precisam garantir o carregamento síncrono de dependências DEVEM usar a antiga API jQuery.sap.require. sap.ui.define não suporta plugins para usar outros tipos de arquivos, formatos ou protocolos. Não está previsto que isso seja suportado no futuro. sap.ui.define não suporta URLs absolutas como nomes de módulos (dependências) nem permite nomes de módulos que comecem com uma barra diagonal. Para referenciar um módulo em uma URL absoluta, pode-se registrar uma raiz de recurso que aponte para essa URL (ou um prefixo dela). sap.ui.define não suporta o 'açúcar' do requireJS, onde declarações de dependências de estilo CommonJS usando sap.ui.require("algo") são automaticamente convertidas em dependências do sap.ui.define antes de executar a função de fábrica.

Além disso, para informações adicionais:

- JQuery.sap está obsoleto a partir da versão 1.58 (https://sapui5.hana.ondemand.com/#/api/jQuery.sap)

Saudações

Fabrice

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
TL;DR:
  • Use sap.ui.define para definir um novo módulo.
  • Use sap.ui.require apenas para requerer módulo(s) existente(s), ou seja, sem definir um novo.
  • jQuery.sap.require: não. Simplesmente não faça.

______

Os seguintes recursos fornecem explicações completas com exemplos:

Após ler cuidadosamente esses recursos, avise-nos se algo ainda não está claro. Ampliarei esta resposta de acordo.

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?