问题标签 [modularization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1180 浏览

spring - 模块化 Java Web 应用程序

我们有一个基于 Java 和 Spring 框架的丰富的 Web 应用程序,它具有许多功能和类。最近我想到了为什么不提供模块化来让它变得更好。

我所说的模块化是指在 Web 应用程序中提供一个部分,经过身份验证的用户可以使用插件或扩展与我们一起贡献。与 joomla、wordpress 和周围的其他 cms 完全一样。

我想将每个部分彼此分开,当用户上传插件时,这不会破坏整个系统和核心。我还想在后端提供插件/扩展测试器,系统不会接受恶意插件。

系统应该能够在不损害核心的情况下卸载每个插件和扩展

我如何制作这个功能,我们必须从哪里开始?

0 投票
1 回答
842 浏览

php - CodeIgniter 模块化扩展和 i18n 库

我一直在使用 Jérôme Jaglale ( http://maestric.com/en/doc/php/codeigniter_i18n ) 的 CodeIgniter i18n 库,它对我的​​项目非常有用。

但由于我需要编写单独的模块,我最近添加了 CodeIgniter 模块化扩展 ( https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc ) 和导航中断。

请问我该如何解决这个问题,我很想同时使用 i18n 库和模块化扩展。

我认为我的应用程序导航无法正常工作,因为 i18n 库引入了在站点 url 中添加了一个语言段,在我的情况下,我的 url 是 localhost/index.php/en/home 并且在添加模块化扩展后,我的导航/链接停止工作。

先感谢您。

0 投票
0 回答
123 浏览

javascript - 模块加载器多次加载同一个库

我想将我的页面分成两个独立的“分离”区域。

现在让我们假设两者都需要具有相同版本的相同依赖项。

requireJS 或任何其他库是否能够管理不同库的不同生命周期?允许在 JavaScript 中“真正”解耦?

我不想全局加载这些东西,因为最终可能会加载相同版本的不同版本。

0 投票
1 回答
123 浏览

c++ - C++ 模块化编程中的可检索日志记录

我的任务基本上是为现有系统构建一个特定的模块。该模块工作正常,但现在我应该在代码中放置日志条目。由于这只是最终系统的一个模块,因此应该在程序外部配置日志记录级别(这很容易解决),即使登录到命令行,主模块也应该能够以编程方式访问我的模块的日志条目或文件被禁用。您是否知道任何现有的具有此功能或可以轻松扩展以拥有它们的日志库?

0 投票
2 回答
2611 浏览

node.js - 如何模块化 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 文件、视图、服务等)的惰性检索?
  • 阻止应用程序在启动时提供插件的所有资源(我猜在启动时需要路由)

由于这不仅仅是一个如何做这个或那个问题,如果我遗漏了重要部分或某些部分不够清楚,我会原谅自己。只要问我,我会深入回答每个问题。

0 投票
1 回答
110 浏览

jsp - OSGi 捆绑包是否必须具有激活器类?

我有一个 osgi 包,它只包含一个 .jsp 文件。我应该为它创建一个激活器类吗?如果是,它应该怎么做?

0 投票
2 回答
1424 浏览

javascript - 带有 Javascript 模块化模式的剑道 UI

我正在使用 kendo ui 创建一个大型商业应用程序。由于应用程序很大。我们已经开始在 javascript 代码中遵循模块化模式。

使用剑道 ui 的模块化模式时。我遇到了一些错误。

我创建了层次结构网格。每个网格代码将是模块化对象。如下所示:

但是我遇到了错误:(我已经评论了这样的错误行//错误。请参见下文)

SCRIPT5007:无法获取未定义或空引用的属性“查找”。

错误原因是“this”对象引用了窗口对象。但它应该引用剑道网格对象..如何解决这个问题

0 投票
1 回答
49 浏览

javascript - 一个有助于模块化下隐藏数据的 JavaScript 连接器?

我之前遇到过 JavaScript 模块化下数据隐藏的问题。请参阅以下链接:

模块模式 - 如何将一个模块的代码拆分成不同的 js 文件?

JavaScript - 提取函数同时保持私有

为了说明问题,请参见下面的示例。我的目标是将我的长js文件分成2个文件,但是有些函数需要访问一些私有变量:

first.js:

second.js:

现在这行不通,因为孩子无权访问父母。一种解决方案是parentPrivate公开可见,但在我的情况下这是不可接受的。

引用@Louis 的话,他回答了之前的一个问题:

“我们不能有一个儿童可以访问但外部公众无法访问的字段(即受保护)。有什么方法可以实现吗?”

如果您想要模块化(即您希望子项与父项分开编码),我认为这在 JavaScript 中是不可能的。可以让孩子和父母在同一个闭包中操作,但这不会是模块化的。无论有没有 RequireJS 都是如此。

问题是父母和孩子不在同一个闭包内。因此我在想,创建一个将文件放入同一个闭包的库是否有意义?

就像是:

当然,我们可以接受更多参数来指定命名空间等。请注意,这与我们从 RequireJS 获得的功能不同。RequireJS实现了模块化,而这个concatenator专注于模块化条件下的数据隐藏。

那么上述任何一个有意义吗?还是我错过了一些重要的点?欢迎任何想法。

0 投票
0 回答
99 浏览

javascript - 模块化下实现数据隐藏的 JavaScript Concatenator 库

JavaScript 连接器

我正在考虑编写一个 JavaScript 库来实现模块化下的数据隐藏。我希望得到一些关于这是否有用以及潜在问题是什么的意见。

让我先解释一下这个问题。我想要实现的是这些:

数据隐藏

我所说的数据隐藏是指这种模式:

在这里,好奇的用户将无法更改我的私有变量,也无法调用我的私有函数。

模块化

只要所有内容都在一个 js 文件中,上述方法就可以工作。但是一旦 js 文件变得太大,我想模块化:

first.js:

second.js:

它不再起作用了。当然我可以放在toggleState一起,privateObj但总是需要跨模块进行数据通信。这只是一个例证。

这是一个真正的问题吗?

真的有这样的情况,我们希望一个函数可以被其他模块访问,但不能被公众访问吗?我想是的。一个直接的例子是这样的:

在这种情况下,我们都应该同意

  1. 与图表相关的东西本身应该是有凝聚力的模块

  2. drawChart() 方法应该由我在其他模块中的代码调用以提供数据

  3. 我们不希望用户任意调用我的 drawChart(),因此不希望将其公开

MathJax项目遇到了这个问题。他们的解决方案是在部署之前使用 bash 脚本连接所有脚本。他们需要这样做的原因是,首先模块是相互依赖的,因此它们需要位于同一个文件中,其次,如果组合起来,文件太大而无法管理(30k LOC)。这里完全相同的问题,所以我相信这是一个真正的问题。

提出的解决方案——JS Concatenator

将它们放在一个封闭的地方,在飞行中。

这就是我想象的应该如何工作。在 HTML 中,我有这些:

然后它应该做这样的事情:

并且first.jssecond.js剥离为:

这行得通吗?

这个提议的解决方案会起作用吗?我错过了一些重要的观点吗?什么是潜在的问题?我该如何实施呢?任何建议都非常感谢!

0 投票
1 回答
300 浏览

model-view-controller - 两个模块之间的接口zend Framework

有没有办法在 2 个模块之间创建接口,以便它们可以相互交互?我正在研究zend framework2。

非常感谢。