在文档中有一个示例将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使用模块,在我看来这是更好的选择。