标签: modularization

角度错误类型错误:无法读取未定义的属性(读取“onDestroy”)

我有问题。Angular 有时会显示错误 ERROR TypeError:无法读取未定义的属性(读取“onDestroy”)

当我运行 ngserve 时,我收到此错误,但如果我使用 Angular Universal,则页面有时会正确加载,有时会显示相同的错误。我发现,当我开始对我的应用程序进行模块化时,这个错误就开始了。

角度版本 13.3

modularization typescript angular

29
推荐指数
2
解决办法
3万
查看次数

如何使用OSGi模块化JSF/Facelets/Spring应用程序?

我正在使用非常大的JSF/Facelets应用程序,它们使用Spring进行DI/bean管理.我的应用程序具有模块化结构,我目前正在寻找标准化模块化的方法.

我的目标是从许多模块(可能相互依赖)组成Web应用程序.每个模块可能包含以下内容:

  • 类;
  • 静态资源(图像,CSS,脚本);
  • Facelet模板;
  • 托管bean - Spring应用程序上下文,包含请求,会话和应用程序范围的bean(替代方法是JSF托管bean);
  • Servlet API的东西 - servlet,过滤器,监听器(这是可选的).

我想避免(几乎不惜一切代价)是需要将模块资源(如Facelets模板)复制或提取到WAR或扩展web.xmlfor模块的servlet,过滤器等.它必须足以添加模块(JAR,捆绑,伪影,...)到web应用(WEB-INF/lib,bundles,plugins,...)来延伸,以与该模块的Web应用程序.

目前,我使用自定义模块化解决方案来解决此任务,该解决方案主要基于使用类路径资源:

  • 特殊资源servlet从类路径资源(JAR)提供静态资源.
  • Special Facelets资源解析器允许从类路径资源加载Facelet模板.
  • Spring通过模式 classpath*:com/acme/foo/module/applicationContext.xml加载应用程序上下文 - 这会加载模块JAR中定义的应用程序上下文.
  • 最后,一对委托servlet和过滤器将请求处理委托给模块中Spring应用程序上下文中配置的servlet和过滤器.

最后几天我读了很多关于OSGi的内容,我正在考虑,如何(以及如果)我可以将OSGi用作标准化的模块化方法.我在考虑如何使用OSGi解决单个任务:

  • 静态资源 - 想要导出静态资源的OSGi包ResourceLoader用bundle上下文注册实例.中央ResourceServlet使用这些资源加载器从bundle加载资源.
  • Facelet模板 - 与上面类似,中心ResourceResolver使用bundle注册的服务.
  • 托管bean - 我不知道如何使用表达式,如#{myBean.property}if myBean在其中一个bundle中定义.
  • Servlet API的东西 - 使用像WebExtender/Pax Web这样的东西来注册servlet,过滤器等等.

我的问题是:

  • 我在这里发明了一辆自行车吗?那有标准的解决方案吗?我发现提到了Spring Slices但是找不到很多关于它的文档.
  • 你认为OSGi是所描述任务的正确技术吗?
  • 我的OSGI应用草图或多或少是正确的吗?
  • 应如何处理托管bean(尤其是请求/会话范围)?

我一般都很感谢你的评论.

java spring osgi modularization

26
推荐指数
1
解决办法
8374
查看次数

如何模块化AngularJS应用程序/插件

关于从Grails(REST-API,AngularJS,MongoDB,Tomcat,Spock,几个插件的部分)到Node.js + Angular.js的迁移,我有几个(软件)架构问题.我可能要解释Grails项目拳头的结构,所以我们在这里:

有一个主要的Grails应用程序(旁边的几个其他应用程序),它建立在几个插件上.这些插件中的每一个都能够自行执行 - 这意味着它有自己的UI,单独的模板,服务,控制器,路由,测试等.它也托管在不同的存储库中.这是由Grails插件机制完成的.其好处是减少了测试工作量,减少了编译时间,模块化,单一职责等等.

但是,编译和测试的时间太贵了.此外,我不喜欢API提供部分模板/视图的事实.我想让后端API"只是作为后端API"和前端"只是作为前端".因此,每个AngularJS应用程序/插件都将提供自己的视图,路由,服务等.但它们也可能依赖于其他插件.

所以我想要实现的目标如下:

  • 一个主要的AngularJS应用程序,包括几个插件(一个插件可以是类似报表生成器,留言簿或任何东西,说到应用程序的单个独立部分,具有特定路径,或只是页面的一小部分) ).
  • 每个插件必须是一个独立的AngularJS应用程序(可能在开发期间通过grunt等执行).因此,UI开发人员不需要启动整个后端应用程序,因此我们可以仅使用JavaScript运行功能测试
  • 仅通过REST进行通信,前端必须从API检索所有数据
  • 每个插件必须可以单独测试
  • 插件可能需要其他插件才能工作
  • 主要的index.html(和app.js?)可能由Nginx服务器提供,该服务器与后端的其余部分(API)分离

虽然我脑子里有一张特定的图片,但我正在努力设置这个架构.

在Grails中,插件机制以某种方式将插件依赖设置(如URL映射,依赖关系等)合并到包含/注入它们的主应用程序中 - 这也是我想用AngularJS实现的.所以:

  • AngularJS是否有某种相同的机制?
  • 如何将每个插件的路由提供/合并到主应用程序中?
  • 如何声明应用程序和插件依赖项?
  • 哪些工具可能对构建过程有用?
  • 如何建立插件资源(css/less文件,视图,服务等)的延迟检索?
  • 阻止应用程序在启动时提供插件的所有资源(我想在启动时需要路由)

因为这不仅仅是一个怎么做这个或那个问题,如果我错过了重要的部分,或者某些部分不够清楚,我会原谅自己.请问我,我将深入回答每个问题.

grails modularization node.js angularjs single-page-application

16
推荐指数
1
解决办法
2303
查看次数

Referenced Method Count Increased After App Modularization

AS: 3.5.3; Android Gradle Plugin: 3.5.0; Gradle: 5.6.2;

We observed a drastic increase in the number of methods referenced in our app after splitting the 'app' module into several small modules. But the strange thing is that the addition of referenced methods by each class is less than the mentioned total in Android Apk Analyzer Tool.

For test purpose, I have moved WebActivity.class from 'app' module to 'adapters' module and referenced method count increased by 181 methods.

To Summarize:

app/WebActivity …

android modularization apk android-studio

16
推荐指数
2
解决办法
560
查看次数

如何在Rails应用程序中实现Modularization?

将大型rails应用程序分解为更小的应用程序?

模块化Rails应用程序

构建"大型"Rails应用程序的最佳实践

我在一个大型Ruby on Rails应用程序中有一个关于模块化的快速问题.

建立:

我正在构建一个存储有关人员信息的核心应用程序.我还有几个"模块"以非常不同的方式使用这些信息.(例如,一个人可以显示有关人的信息,另一个人可以找出他们之间的联系和共性等).

问题:

如何有效地模块化这个应用程序?

潜在的答案:

由于模块与核心应用程序(以及彼此)共享模型和视图,因此我将它们组合到一个应用程序中是有意义的.但是,随着应用程序的增长,这显然会导致问题.这对我来说建议命名空间控制器和模型" 如何在中等大型Rails应用程序中组织控制器? "或使用引擎" Modularizing Rails应用程序 ".

由于模块处于主动开发状态,因此在它们上使用轨道发生器非常有用,这似乎使得使用发动机时很痛苦.看起来虽然从Rails的角度来看完全支持引擎,但在缺乏生成器支持和数据库迁移方面,它们似乎仍然相当hacky.有没有人有成功开发引擎的经验?如果你有一个工作的应用程序想要将它移植到一个插件(即复制粘贴代码),似乎引擎将是一个很好的解决方案,但如果你正在积极开发它(更改模型等),这将是困难的.

我看到的最后一件事是使用多个应用程序和一个数据库.这种方式看起来像皇家的痛苦与迁移和保持模型等等.但我想我也会对此有所了解.

ruby ruby-on-rails modularization

11
推荐指数
1
解决办法
1291
查看次数

Delphi中模块化编程的最佳方法

这是我在这里开始的讨论的延续.我想找到模块化Delphi源代码的最佳方法,因为我在这个领域没有经验.我将感激你的所有建议.

让我发布我在那里写的内容.

我工作的公司开发的软件包含100多个模块(大多数模块类似于不同设备的驱动程序).他们中的大多数共享相同的代码 - 在大多数情况下是类.问题是这些类并不总是放在单独的独立PAS单元中.我的意思是共享代码通常放在包含特定于模块的代码的单元中.这意味着当您修复共享类中的错误时,将其定义的PAS单元复制到所有软件模块并重新编译它们是不够的.不幸的是,您必须将固定的代码片段逐个复制并粘贴到每个模块中,并将其粘贴到适当的单元和类中.这需要花费很多时间,这是我希望通过选择正确的方法在最近的将来消除 - 请帮助我.

我认为使用与EXE一起分发的BPL将是一个很好的解决方案,但它有一些缺点,正如前面讨论中提到的那些.最糟糕的问题是,如果每个EXE需要几个BPL,我们的技术支持人员将不得不知道哪个EXE需要哪个BPL,然后为最终用户提供适当的文件.只要我们没有软件更新程序,这对我们的技术人员和最终用户来说都是一个很大的优势.他们肯定会迷茫和愤怒: - /.

此外,还可能出现兼容性问题 - 如果许多EXE共享一个BPL,则对该BPL的修改可能对一个EXE有利,对另一个EXE则有害.

那么我应该怎么做才能在这么多项目中更快地修复错误?我想到了以下方法之一.如果您有更好的想法,请告诉我.

  • 将共享代码放入单独的独立PAS单元中,因此当其中一个中存在错误修复时,将其复制到所有项目(覆盖旧文件)并重新编译所有项目就足够了.这意味着每个单元的复制次数与其使用的项目数相同.

就很少修改的代码而言,这个解决方案似乎没问题.但我们也有具有一般使用功能和程序的通行单元,这些功能和程序经常进行修改.每次有人向此文件添加新功能时,都不可能执行相同的程序(复制和重新编译这么多项目).

  • 为所有共享代码创建BPL,但将它们链接到EXE,以便EXE是独立的.

对我来说,这似乎是现在最好的解决方案,但有一些缺点.如果我在BPL中修复错误,每个程序员都必须在他们的计算机上更新BPL.如果他们忘记那样做怎么办?但是,我认为这是一个小问题.如果我们负责通知对方有关变化,一切都应该没问题.你怎么看?

  • CodeInChaos建议的最后一个想法(我不知道我是否理解它).在项目之间共享PAS文件.这可能意味着我们必须将共享代码存储在一个单独的文件夹中,并让所有项目在那里搜索该代码,对吧?每当有必要修改项目时,我想必须从SVN下载共享文件文件夹.共享代码中的每个更改都必须导致重新编译使用该代码的每个项目.

请帮我选择一个好的解决方案.我只是因为一种愚蠢的软件开发方法,我不希望公司在错误修正方面损失比必要的更多的时间和金钱.到目前为止,没有人关心它,你可以想象它会导致多少问题.

非常感谢你.

delphi bpl modularization

11
推荐指数
1
解决办法
2312
查看次数

模块化JavaScript - 除了CommonJS和AMD之外还有其他方法可以考虑吗?

我正在为我的公司准备评估JavaScript模块化方法.我们正在为我们的项目定义"JavaScript最佳实践",模块化是一个核心问题.

从我迄今为止的研究中发现了两种主要方法:

周围有大量的加载器,插件,库等.

除此之外,还有goog.provide/ goog.require来自Google Closure Library.

还有其他方法需要考虑吗?我错过了哪些重要/相关的规格?

我们的要求简要说明:

  • 在单独的文件中构建JavaScript代码.
  • 在运行时加载相关模块.
  • ...不必将每个文件都包含在脚本标记中.
  • 一定不能维护JavaScript文件的索引.
  • 支持聚合和缩小 - 构建和使用单个缩小/优化的JavaScript文件的能力.
  • 能够以不同的组合使用模块 - 通常有不同的网页/客户端需要不同的模块子集.
  • 支持文档(使用JSDoc?).
  • 适合测试.
  • 适用于网络,跨浏览器.
  • 合理的IDE支持.

潜在:

  • 与ES6模块对齐.
  • 适用于Node.js和移动平台(如PhoneGap/Cordova).

答案的新建议:


附注:

  • 问题在于哪种方法更好.
  • 我不是要求特定的库和工具,而是要求方法和规范.
  • 我并没有特别要求提供场外资源.(如果没有这样的SO标签,我们考虑它可能是不合理的.)
  • 关于等框架的说明.这不是真正适合这个问题的框架.如果项目需要一个框架(无论是AngularJS还是ExtJS),那么大多数都没有模块化问题,因为框架必须提供模块化OOTB.如果项目不需要框架,那么由于模块化而带来框架是一种过度的做法.这是我特别没有询问库/工具的原因之一.

javascript amd modular modularization commonjs

11
推荐指数
1
解决办法
873
查看次数

angular.js - 定义实用程序库的最佳实践

我正在使用angular给出我的第一步,我需要定义一个实用程序帮助程序库,其中包含一些函数方法,类似于

dataHelper.parse,dataHelper.sanitize

以角度组织它的推荐方法是什么?

module organization modularization angularjs

10
推荐指数
1
解决办法
6506
查看次数

软件项目的模块化有多重要

模块化是软件项目显然是重要的,但我想知道人们对意见如何重要,为了什么原因,这一点很重要.自从我问这个问题以来,我显然已经有了自己的想法,但是把它想象成一个应该模块化软件项目的原因的"共同头脑风暴"......

architecture modularization

9
推荐指数
2
解决办法
5882
查看次数

OSGi包的包结构

我一直在思考一些关于osgi包中的包结构的"良好实践".目前,平均而言,我们每捆有8-12个班级.我的主动/建议之一是有两个包; com.company_name.osgi.services.api(用于api相关的类/接口(外部导出)和一个用于实现的包com.company_name.osgi.services.impl(未导出)).这有什么优点?还有其他建议吗?

java osgi modularization

7
推荐指数
1
解决办法
1163
查看次数