Javascript 如何使用jquery要求一个requirejs模块?
假设我有这个ResourceBundleContext.js文件(requirejs模块): 在路径中:Javascript 如何使用jquery要求一个requirejs模块?,javascript,jquery,requirejs,sapui5,Javascript,Jquery,Requirejs,Sapui5,假设我有这个ResourceBundleContext.js文件(requirejs模块): 在路径中: sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext 我想使用jquery来要求上面的模块,这将很好: jQuery.sap.require("sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext")
sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext
我想使用jquery来要求上面的模块,这将很好:
jQuery.sap.require("sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext");
我如何使用jQuery要求一个requirejs模块
谢谢 这是因为您混合了“旧”同步requirejs和新的异步AMD模块。您有两种可能的解决方案:
true
作为最后一个参数,以将模块导出到全局命名空间中,这样您就可以在jquery.sap.require()之后访问它
sap.ui.define([
“sap/ui/model/resource/ResourceModel”
],功能(资源模型)
{
"严格使用",;
var resourceBundleContext=函数()
{
var i18nModel=新资源模型({
bundleName:“sap/rules/ui/src/sap/rules/ui/lib/parser/i18n.messages\u description”
});
返回{
getString:函数(messageKey,paramsArray)
{
var oBundle=i18nModel.getResourceBundle();
var sMsg=oBundle.getText(messageKey,paramsArray);
jQuery.sap.log.debug(“代码:+messageKey+”,参数:+paramsArray+”\n消息:+sMsg);
返回sMsg;
}
};
};
返回新的resourceBundleContext;
},true/*导出到全局命名空间*/)// 这是因为您混合了“旧”同步requirejs和新的异步AMD模块。您有两种可能的解决方案:
在模块定义中,您必须将true
作为最后一个参数,以将模块导出到全局命名空间中,这样您就可以在jquery.sap.require()之后访问它
sap.ui.define([
“sap/ui/model/resource/ResourceModel”
],功能(资源模型)
{
"严格使用",;
var resourceBundleContext=函数()
{
var i18nModel=新资源模型({
bundleName:“sap/rules/ui/src/sap/rules/ui/lib/parser/i18n.messages\u description”
});
返回{
getString:函数(messageKey,paramsArray)
{
var oBundle=i18nModel.getResourceBundle();
var sMsg=oBundle.getText(messageKey,paramsArray);
jQuery.sap.log.debug(“代码:+messageKey+”,参数:+paramsArray+”\n消息:+sMsg);
返回sMsg;
}
};
};
返回新的resourceBundleContext;
},true/*导出到全局命名空间*/)// 在使用resourceBundleContext
的模块中,您还可以使用与resourceBundleContext
定义中类似的AMD模式,例如:
sap.ui.define([
"sap/hrf/ui/uilib/js/parser/infrastructure/locale/lib/resourceBundleContext"
], function (ResourceBundleContext)
{
'use strict';
var AwesomeApp = function ()
{
var resourceBundleContext = new ResourceBundleContext();
alert(resourceBundleContext.getString("AwesomeKey", ["AwesomeParms"]));
};
return AwesomeApp;
});
在整个UI5应用程序中以AMD风格构建所有模块可以提供一定程度的一致性,并提高加载所需模块的性能
还请注意,SAP在其define
的实现中没有利用require.js,也不完全兼容require.js或其他AMD加载程序。您可以在使用resourceBundleContext
的模块中阅读更多关于SAP实施以及与require.js的差异的信息,您还可以使用与resourceBundleContext
定义中类似的AMD模式,例如:
sap.ui.define([
"sap/hrf/ui/uilib/js/parser/infrastructure/locale/lib/resourceBundleContext"
], function (ResourceBundleContext)
{
'use strict';
var AwesomeApp = function ()
{
var resourceBundleContext = new ResourceBundleContext();
alert(resourceBundleContext.getString("AwesomeKey", ["AwesomeParms"]));
};
return AwesomeApp;
});
在整个UI5应用程序中以AMD风格构建所有模块可以提供一定程度的一致性,并提高加载所需模块的性能
还请注意,SAP在其define
的实现中没有利用require.js,也不完全兼容require.js或其他AMD加载程序。您可以阅读更多关于SAP实施的信息,以及与require.js的区别,您对“will not good”的理解是什么?您是否在控制台中收到错误消息?加载失败了吗?你不能在require之后访问对象吗?@schnoedel hi,我的意思是它不需要fail,它调用文件但不需要他,在我这样做之后:var ResourceBundleContext=sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.ResourceBundleContext;ResourceBundleContext将不被定义“将不好”是什么意思?您是否在控制台中收到错误消息?加载失败了吗?你不能在require之后访问对象吗?@schnoedel hi,我的意思是它不需要fail,它调用文件但不需要他,在我这样做之后:var ResourceBundleContext=sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.ResourceBundleContext;ResourceBundleContext将不会被修改,请你写下我到底需要写在哪里?真的吗?非常感谢!,将模块用作全局模块时会对性能造成损害?那么,jquery.sap.require
会发出同步ajax请求,以便第一次加载模块文件。这可能会阻塞您的ui线程一段时间。这就是ui5迁移到异步AMD模式的原因之一。你能写下我最后需要在哪里写下真的吗?非常感谢!,将模块用作全局模块时会对性能造成损害?那么,jquery.sap.require
会发出同步ajax请求,以便第一次加载模块文件。这可能会阻塞您的ui线程一段时间。这就是ui5迁移到异步AMD模式的原因之一。