Angular 5 - 在运行时动态加载模块(在编译时未知)

2023-11-25

Angular 5 是否可以动态加载编译时未知但运行时未知的模块/组件?

我想这不会使用 webpack 工作,但也许使用 system.js ?

EDIT:

整个想法是构建一个基于插件的应用程序,其中各个插件被放入插件文件夹中,Angular 将自动选择它,而无需重新编译和部署整个 Angular 应用程序。插件是独立的功能部分。当然还有路线导航等。这意味着一旦 Angular 理解有一个新插件,它应该添加一些动态导航,以便用户能够导航到该插件等。


好吧,虽然涉及到复杂性,但你could尝试一下。我猜取决于你的代码库。路由器暴露config属性,保存其当前配置,以及resetConfig(routes: Routes)重置配置的方法。您可以从那里开始,并动态添加组件。

不过,这些组件必须是可访问的。也许是动态创建的,正如另一个答案中提到的。或者,您的配置可以包含如下内容:

constructor(private router: Router) {}

private addPlugin(routePath, pluginName, pluginPath) {
    const currentConfig = this.router.config;
    currentConfig.push({
        path: routePath,
        loadChildren: `precompiled-modules/${pluginPath}#${pluginName}`,
    });
    this.router.resetConfig(currentConfig);
}

您必须以某种方式获取pluginPath和pluginName - 也许按惯例计算它,也许一个小的后端助手得到这个,也许有它的数组预先配置并已经加载或类似。我还假设您将拥有一个非常好的测试系统,以确保您的插件“兼容”。最后,教 webpack/systemjs 如何准备好模块。总而言之,这并非不可能,但需要一些基础工作。

也就是说,Angular 6 和 Angular Elements 即将到来。 Elements 将提供一种将模块编译为 Web 组件并“导出”它们的方法,以便它们可以在任何地方使用(不一定在 Angular 应用程序中)。想想 jQuery 插件 - 有一个基础jQuery.min.js您需要已经加载,但除此之外您不再考虑它,您只需使用新元素即可。它与 Angular Elements 类似 - 您导出基本上是一个 Web 组件。有一个“加载器”部分(jquery.min.js 等效项)和您的 Element 包。但是你的组件只是另一个 HTML 节点,具有属性、属性、绑定、事件,你不再关心,就像你不再关心输入一样。

也许值得等待,看看并自己决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 5 - 在运行时动态加载模块(在编译时未知) 的相关文章

随机推荐

  • 如何在 PyCharm 中远程调试

    我现在面临的问题是 我通过 SSH 在远程主机上部署 Python 代码 脚本传递一些参数并且必须由特定用户运行 我创建的 PyCharm 运行 调试配置通过不同用户通过 SSH 连接 无法与实际运行脚本的用户连接 我想通过 PyCharm
  • 找不到用于签名配置“调试”的密钥库文件 D\Telegram-master\TMessagesProj\config\release.keystore

    我下载了新版本的 Telegram 当运行它时 出现此错误 Keystore file D Telegram master TMessagesProj config release keystore not found for signin
  • Android HttpClient Cookie

    Android HttpClient 是否可以自动管理 cookie 它确实支持它 阅读下面的帖子 似乎在调用执行时必须传递相同的 HttpContext response httpClient execute httpPost local
  • 不必要的水平滚动条jqGrid

    在我的 jqGrid 使用版本 4 0 0 中 我得到了一个不必要的水平滚动条 但也有一个垂直滚动条 此问题仅出现在 Chrome 和 Firefox 中 但不会出现在 Internet Explorer 中 看起来表格宽度的计算有问题 因
  • Java Swing:实现输入值的有效性检查

    在我的 Swing 应用程序中 用户必须在切换到下一个窗口之前插入数字和值 现在 作为一个干净的程序应该检查每个输入是否有效 如果无效 则会显示错误消息并且不会打开下一个窗口 该检查的结构如下 示例 Button buttonToOpenN
  • 使用 .htaccess 从 URL 中删除 PHP 文件扩展名

    我刚刚在 Ubuntu 12 上安装完 LAMP 堆栈 并遇到了 Apache 的 htaccess 文件的问题 我启用了重写和重定向 mods 并且 htaccess 文件正在工作 如果不存在 www URI 将重定向到 www 但无论我
  • 如何使用 GWT 检查给定的图像 URL 是否存在?

    我想检查给定的 URL 是否存在并且它是一个图像 以便创建一个new Image String url 从中 如果给定的 URL 不是图像 那么它应该返回错误 我一直在寻找同样的东西 我想确定何时未从 URL 加载图像 有一个 ErrorH
  • 如何使用 Angular 动态加载 CSS

    在过去的几天里 我一直在尝试解决这个问题的几个答案 建议和教程 但不幸的是他们都没有成功 最接近的是这样的 https juristr com blog 2019 08 dynamically load css angular cli 但它
  • 如何交换字符串中的两个字符?

    我想写一个函数如下 输入 字符串 A int i 0 输出 将 i 1 处的字符与 i 处的字符交换的字符串 A 什么是clean能够实现这一目标的解决方案 我目前的解决方案是 let mut swapped input str 0 i t
  • React中createStore和createStoreWithMiddleware有什么区别?

    我找到了两种配置 redux createStore 的方法 1 https github com TeamWithBR SampleProjectTodo blob master src store configureStore js 2
  • ASP.NET MVC - 填充下拉列表

    我是 ASP NET MVC 新手 我试图弄清楚如何根据数据库中的值创建基本下拉列表 在 ASP NET Web 表单中 我知道我可以加载如下下拉列表 页面 aspx
  • 检查数组是否有一个或多个空值[重复]

    这个问题在这里已经有答案了 我有数组 var 如果数组中的一个或多个元素为空 我的意思是 字符串是 我想返回 FALSE 我觉得array filter 是更好的方法 但我不知道如何以这种方式过滤它 我该怎么做 函数emptyElement
  • 仅使用内置库使用 Python 制作基本的网络抓取工具 - Python

    学习Python 我试图制作一个没有任何第三方库的网络爬虫 这样这个过程对我来说就不会被简化 而且我知道我在做什么 我浏览了一些在线资源 但所有这些资源都让我对某些事情感到困惑 html 看起来像这样 lots of other div t
  • 有没有一个公式可以将纬度和经度转换为单个数字?

    你能告诉我是否有一个公式可以将纬度和经度转换为单个数字 我计划将其用于提供交付路由的软件中的数据库表 表行将包含该号码以及邮政地址 数据库表将按数字升序排序 以便软件可以找出卡车需要前往第一个 第二个等的地址 请您回复显示 VB 或 VB
  • 如何指定运行脚本的python版本?

    我现在正在使用预装 python 2 7 5 的 mac 学习 python 但我也安装了最新的3 4 我知道如何选择在命令行模式下使用哪个解释器 即 python vs python 3 将调出各自的解释器 但是 如果我只是编写一个包含此
  • 自定义自动隐藏浮动操作按钮行为不起作用

    我试图在 NestedScrollView 向下滚动时隐藏 FloatingActionButton 并在 NestedScrollView 向上滚动时显示自身 这是我的布局
  • 如何内省 Django 中的属性和模型字段?

    我正在尝试获取给定对象的所有现有模型字段和属性的列表 有没有一种干净的方法来内省对象 以便我可以获得字段和属性的字典 class MyModel Model url models TextField def get location sel
  • 将 JTextField 输入转换为 Integer

    我是 JAVA 新手 我试图将 JTextField 的输入转换为整数 我尝试了很多选项 但没有任何效果 Eclipse 总是给我一个错误 并且这些错误对我来说没有意义 导入java awt Graphics 导入java awt Colo
  • 如何访问 MediaBrowserServiceCompat 服务的实例?

    令人惊讶的是 我正在努力获取源自以下内容的服务实例 MediaBrowserServiceCompat 对于典型的服务 为了实现这一点 使用本地绑定器 class MyService extends MediaBrowserServiceC
  • Angular 5 - 在运行时动态加载模块(在编译时未知)

    Angular 5 是否可以动态加载编译时未知但运行时未知的模块 组件 我想这不会使用 webpack 工作 但也许使用 system js EDIT 整个想法是构建一个基于插件的应用程序 其中各个插件被放入插件文件夹中 Angular 将