我知道有些解决方案可以通过javascript使用System.import
进行检索,但是我想使用directive version,因此我们不必为每个模板创建一个控制器。< / p>
我想要实现的是提取作为条目文件发送的所有文件的列表,具有特定扩展名,并获取其捆绑名称。
为了简单起见,我说我有3个文件:
module-a.lazy.js
module-b.lazy.js
main.entry.js
让我们说我的入口点和输出定义如下:
var config = {
entry: {
module-a: "./module-a.lazy.js",
module-b: "./module-b.lazy.js",
bundle: "./main.entry.js"
},
output: {
filename: "[name]-[hash:4].js",
path : '/build'
}
}
显然,我最终会在我的构建文件夹中找到3个文件,每个文件都有一个自定义动态哈希文件,我无法输入ocLazyLoad指令。
在main.entry.js文件中,我有一个常量设置,我想用懒惰文件的输出名称替换它。
angular.module('demo', [])
.constant('lazies', '%lazyfilenamehere%');
预期输出将是这样的:
angular.module('demo', [])
.constant('lazies', ['/build/module-a.lazy-af34.js','/build/module-b.lazy-fdg3.js']);
一旦我可以获得输出路径名并将它们存储在主包中,我可以轻松地修饰原始的ocLazyLoad指令,首先通过部分字符串搜索此数组,匹配时可以返回整个文件名并按正常方式请求
答案 0 :(得分:0)
您甚至不需要指定入口点,一旦开始使用动态导入,它们将自动创建。使用类似的东西:
angular.module('demo', [])
.constant('lazies', {
'module-a' : () => import('module-a'),
'module-b' : () => import('module-b')
});
比你的指令基于ocLazyLoad并准确地让你的懒惰模块完全匹配。
UPD:我开始认为可能会根据模块名称生成一组指令。你可以随意在任何地方使用它们!