使用 Angular 7 在混合应用程序中加载 Angularjs 包

Posted

技术标签:

【中文标题】使用 Angular 7 在混合应用程序中加载 Angularjs 包【英文标题】:Load Angularjs bundle in a hybrid application with Angular 7 【发布时间】:2019-05-23 14:31:06 【问题描述】:

我有一个很大的应用程序,我应用了一些更改以使其成为混合。

如果旧的 Angularjs 应用程序包按时加载,它将正常工作。 (这是一个 4-5MB 的捆绑包) 我在网上查了一些样本,他们中的大多数人都这么说。例如:

https://github.com/manfredsteyer/ngUpgrade-lite-sample/blob/master/src/index.html

这会起作用,因为它是一个小应用程序,他只是手动导入所有模块和组件,而在我的应用程序中有超过 200 个组件是不可能的。

那么在 Angular 混合应用程序中加载 Angularjs 应用程序包的最佳方法是什么?

我将旧应用程序与 Webpack 4 捆绑在一起,还尝试将其导入 main.ts 文件中,还尝试了 angular.json 中的 script 并没有运气,它给了我错误:

未捕获的错误:[$injector:nomod] 模块“app”不可用!

我想这一定是因为在新的 angular 7 引导应用程序之前没有加载 angularjs

【问题讨论】:

【参考方案1】:

好吧,伙计们,我刚刚想通了。有两种方法可以做到这一点,首先是创建一个 javascript 加载器,您可以在此处找到如何操作:

https://davidwalsh.name/javascript-loader

我所做的另一个解决方案是创建一个独特的构建过程。这意味着我完全取出了 Angular 7 构建过程并将其复制到我的 Angularjs Webpack 配置中,因此最终结果是一个包,其中包含同一包中的两个应用程序。

为此,您可以查看这个包,它为您提供 Webpack 中 Angular 的构建工具:

https://github.com/angular/ngtools-webpack-builds

请记住,您应该在 Webpack 配置文件中通过 raw-laoder 处理 htmlscss 文件。

如果我发现新内容,我会更新这篇文章以提供更多信息。

【讨论】:

以上是关于使用 Angular 7 在混合应用程序中加载 Angularjs 包的主要内容,如果未能解决你的问题,请参考以下文章

使用 require 在 Angular 11 应用程序中加载图像

如何在 Angular Electron 中加载模块?

如何使用 systemjs 在最小的 Angular 2 应用程序中加载 RxJS?

Phonegap混合iOS应用程序中加载的远程网页可以将数据保存到iOS文件系统吗?

Angular OpenID:在浏览器中加载应用程序之前重定向到登录

如何在 Angular + Webpack + Heroku 应用程序中加载应用程序之前包含 CSS