我正在使用webpack
进行 dynamic import
来加载子目录中的文件:
const requireApplicationRoutes = require.context('./', true, /routes.js$/);
let routes: any = [];
requireApplicationRoutes.keys().forEach((fileName) => {
routes = routes.concat(requireApplicationRoutes(fileName).default);
});
如何使用import
模块中的typescript
(esnext
)? (此代码在打字稿文件中)是否像import('./**/*.ts')
?
答案 0 :(得分:1)
在webpack
,typescript
和esnext
中,您可以使用require.context
加载子目录中的文件,而只需使用lazy option from webpack。
您的typescript
代码应类似于:
const requireApplicationRoutes = (require.context as any)('./', true, /routes.ts$/, 'lazy');
requireApplicationRoutes.keys().forEach((fileName: any) => {
routes = routes.concat(requireApplicationRoutes(fileName).default);
});
但是,require.context
返回Promise
版本的webpack
,因此您的代码应为:
const routes = Promise.all(
requireApplicationRoutes.keys().map((fileName: string) => requireApplicationRoutes(fileName).then((route: any) => route.default)),
).then(([ modules ]) => modules);
并且您应该在文件中包含所有惰性束,并且路由是路由的数组。 :)