如何使用填充程序将全局第三方项目映射到作用域对象



在文档中有一个示例将lodash包含在项目中,它通常会将变量"_"添加到全局范围内。借助 AMD 填充程序,您可以映射预期内容(全局(,并在导入中显示此内容。

例如:

specVersion: "1.0"
type: application
metadata:
name: my.application
--- # Everything below this line could also be put into the ui5.yaml of a standalone extension module
specVersion: "1.0"
kind: extension
type: project-shim
metadata:
name: my.application.thirdparty
shims:
configurations:
lodash: # name as defined in package.json
specVersion: "1.0"
type: module # Use module type
metadata:
name: lodash
resources:
configuration:
paths:
/resources/my/application/thirdparty/: "" # map root directory of lodash module

我希望能够(通过填充程序配置(将window._映射到我在"导入"中定义的内容(在下面的示例中为"myLodash"(

sap.ui.define([ "/resources/my/application/thirdparty/lodash"],

function(myLodash( { "使用严格";

var MyController = Controller.extend("com.my.application", {
myLodash.chunk(['a', 'b', 'c', 'd'], 2);
});

在 RequireJS 中,这将在 Shim> 导出中定义

您可以使用 sap.ui.loader API 来影响这一点。在导入此模块之前的某个地方,就像Component.js一样:

sap.ui.loader.config({
shim: {
"path/to/module/myLodash": {
exports: "_"
}
}
});

然后你可以像这样导入它:

sap.ui.define(["path/to/module/myLodash"], function (myLodash) {
"use strict";
myLodash.chunk(...)
...
});

确保path/to/module/myLodash通向您的 lodash 模块所在的位置。

更新

在这篇博客中,解释了如何直接从node_modules使用模块,在我看来这是更好的选择。

最新更新