gpt4 book ai didi

javascript - Angular 7/1.x 混合应用程序可以支持 HMR 吗?

转载 作者:太空狗 更新时间:2023-10-29 17:38:42 24 4
gpt4 key购买 nike

我正在尝试使用 downgradeModule 策略在混合 Angular 应用程序上实现 HMR,但它只是失败了。我是从另一个问题过来的Can an Angular 5/1.x hybrid app support HMR?因为没有公认的答案,我认为@scipper 的答案不起作用(解释如下)。
我使用 HMR 设置了 webpack 配置(不是 ng-cli,自定义配置)(添加了 new webpack.HotModuleReplacementPlugin(),添加了 devServer.hot:true 和其他东西)和我可以看到它正在工作,我的入口文件正在重新加载,但没有使用新源重新加载整个页面,并且 webpack 很好地应用了热更新,但是 angular 和 angularjs 应用程序不工作(使用旧的缓存代码)。
我的计划是:
1) 在入口文件中添加模块hot accept。
2) 销毁 angular.js 应用程序(如果它存在)(使用 $rootScope destroy?)。
3) 如果根 angular.js app 节点存在,销毁它。
4) 使用类似

的代码构建 Angular 模块
// bootstrap you new Angular 7 main module
const bootstrapFn = (extraProviders) => {
const platformRef = platformBrowserDynamic(extraProviders);
return platformRef.bootstrapModule(MyAngularSevenModule);
};
const downgradedModule = downgradeModule(bootstrapFn);

5) 调用或重新调用 angularjs 模块和依赖项 + 我的 Angular 模块 - 我认为这是我的主要问题。
6) 引导 angularjs 应用程序(或 $compile + $digest)。

已经尝试过:
- https://github.com/PatrickJS/angular-hmr - 由于 downgradeModule 策略(根节点是 ajs)而不起作用。
- https://github.com/vitaliy-bobrov/angular-hot-loader - 很多错误是因为提供者和其他拦截器没有实现。
- https://github.com/noppa/ng-hot-reload

我预计 Bootstrap 将更新缓存的 Angular 实体,但在 hmr 重新加载 Angular 之后, Angular 使用旧的 Controller /组件/指令(源选项卡中有新代码)。
有什么建议吗?

最佳答案

我在入口文件中设置错误,@scipper 是对的,它正在工作。但是通过这种策略,我们正在重新加载整个应用程序(并丢失任何状态),我想找到仅重新启动已更改部分的解决方案。

关于javascript - Angular 7/1.x 混合应用程序可以支持 HMR 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com