小编vpr*_*ais的帖子

列出带有延迟加载模块的 Angular 9 应用程序的所有路由

我想在我的应用程序中有一条路线,我可以在其中列出应用程序中的所有现有路线。我在 Angular 9 中使用 Ivy 并使用动态导入进行延迟加载。

该应用程序有一些延迟加载的模块。该路由将在根模块中声明。但是此时router.config只包含“根”路由,而懒惰的路由有一个 loadChildren()` 方法,可以动态导入模块。

我尝试过这样的事情:角度 8 中的延迟加载模块,但无法使其适用于路线。路由器实例似乎没有更新。

查看路由器的源代码,我已经成功加载了lazy模块并使用configLoaderload方法获取了子路由

(<any> this.router).configLoader.load(this.injector, route).subscribe({
  next: (moduleConf) => {
    children.push(...moduleConf.routes.map((childRoute) => childRoute.path));
  }
})
Run Code Online (Sandbox Code Playgroud)

它运行良好,但我使用了 的configLoader属性,Router它是一个私有属性。所以这对未来来说不是一个好主意:)

我制作了一个堆栈闪电战,您可以在其中查看/测试代码。该组件还有一个loadConfOld()方法,该方法尝试使用moduleFactory.

我怎样才能以适当和持久的方式做我想做的事?预先感谢您的帮助。

lazy-loading angular-module angular angular-router

8
推荐指数
1
解决办法
929
查看次数

为没有 HTML 的 webpack mini-css-extract-plugin 提取文件创建链接标签

我想用 webpack 4 打包一个 javascript 项目,但我正在努力处理 CSS 文件。我捆绑的 JS 文件将被其他网站使用带有绝对 URI 的脚本标签。所以我希望我的包为样式表注入链接标签,以便管理文件名中的哈希。

我的样式源是一个scss文件。当我使用它时效果很好,style-loader但我想在其他文件中提取 CSS。

我尝试了以下方法webpack.config.js

const miniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: 'development',
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [
                    miniCssExtractPlugin.loader,
                    'css-loader',
                    'sass-loader']
            }
        ]
    },
    plugins: [
        new miniCssExtractPlugin({
            filename: '[name].[hash].css',
        }),
    ]
};
Run Code Online (Sandbox Code Playgroud)

它在输出目录中创建我的 CSS 文件,但加载程序不会像那样将它注入到 DOMstyle-loader中。而且我不能style-loadermini-css-extract-plugin.

我无法使用,html-webpack-plugin因为没有 HTML 输出文件。有没有办法用现有的装载机做我想做的事?有没有办法在JS中获取提取的文件url来自己创建链接标签?

我的 devDependencies :

{
  // ...
  "devDependencies": {
    "css-loader": "^3.3.2",
    "mini-css-extract-plugin": …
Run Code Online (Sandbox Code Playgroud)

javascript webpack css-loader mini-css-extract-plugin

2
推荐指数
1
解决办法
1701
查看次数