问题标签 [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 投票
3 回答
6778 浏览

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

我正在使用 Angular 迈出第一步,我需要定义一个实用程序帮助库,其中包含几个函数方法,例如

dataHelper.parse, dataHelper.sanitize, 等

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

0 投票
2 回答
12046 浏览

c - C 多重定义/第一次在这里定义错误

我正在尝试编写一个书店程序,并且在我的函数实现中的源代码文件中出现“多重定义”的错误。

这是我的 Book.c 文件:

这是我的 Book.h 文件:

这是我的 main.c 文件:

错误发生在 Book.c 中的 scanBook 函数中,但我不知道为什么,因为我包含了头文件以及 #pragma 一次,并且在头文件中我声明了该函数。它说 'scanBook' 和 obj\Debug\Book.o .... 的多个定义首先在这里定义。

任何帮助或澄清将不胜感激!

0 投票
7 回答
929 浏览

javascript - 模块化 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。如果项目不需要框架,由于模块化,带框架就大材小用了。这是我特别询问库/工具的原因之一。
0 投票
3 回答
1122 浏览

java - 从单独的类打印私有字段

我的任务是将两个类联系在一起。第一类是售票机,它允许人们购买一张票,然后将其打印出来(通过 System.out.println)。第二类是显示时间的时钟显示器。

我的任务是让票类打印时钟显示类中当前显示的时间。有人告诉我,我不需要编辑 NumberDisplay 类或 ClockDisplay 类。

我最初的想法是在我的 ticketmachine 类中创建一个新的 ClockDisplay 字段,然后使用

因为 displayString 是我用来在时钟显示类中查找值的。但是,由于该字段是私有的并且我不能编辑时钟显示类,所以我不能这样做。有什么想法吗?

谢谢你。到目前为止,这是我的代码,上面提到的 TicketMachine 类中的代码。

数字显示

时钟显示

}

售票机

}

0 投票
2 回答
101 浏览

python - 最喜欢的乐队 Python

您好,我遇到了一个问题,我必须列出一个列表并在这些列表中找到各个乐队,看看他们是否都有一个共同喜欢的乐队。如果是这样,我应该输出true。我需要遵循这种编程方法来模块化我的代码,但我似乎无法理解它。到目前为止,这是我的代码。感谢您提供的所有帮助。

0 投票
2 回答
190 浏览

php - How to structure/modularize an application with a cross-module search?

I'm developing a Zend Framework 2 application, that should provide:

  • a search in projects with a result list of projects
  • a single project view
  • a search in images with a result list of images (every image belongs to a project)

Also there are two main entities: image and project andthe first idea was to create two modules (Image and Project) and to give to each of them a separate search fuctionaly. But it would mean much of duplicated code. OK, maybe a separate Search module? But then this module would essentially depend on the other modules.

What would be a good approach for such case? Are there a best practice for this?

0 投票
1 回答
117 浏览

javascript - 将 Express 4 添加到模块化 Angular ui-router 应用程序

我现在必须将 Express 4 添加到我的模块化 AngularJS ui-router 应用程序中。以前我使用本教程来模块化我的 Angular 应用程序。我目前在src/app/目录中拥有 AngularJS 应用程序的所有模块,如下所示:

现在我想知道我应该如何分解 Express 4 代码以适应我的 Angular 模块。我真的找不到任何专注于此的教程。有任何想法吗?

0 投票
1 回答
351 浏览

swift - 如何模块化和重用视图和控制器的部分?

例如,我有一个带有导航栏、按钮和与之关联的操作的视图。有没有办法打包视图和控制器的一部分,以便我可以将它连同它的代码一起拖放到其他视图中?当然,将代码维护在一个地方,更改会反映在所有使用它的页面中。

这是否可以通过创建框架和超类来实现,以便在项目甚至其他项目之间共享?不确定是否也打包 UI 视图组件本身。任何经验或方向将不胜感激!

0 投票
1 回答
61 浏览

c++ - C++ 分配有助于创建代码以实现可重用性?

我在做这个任务时遇到了麻烦。我只是很难理解,我不完全确定该怎么做。我研究并观看了视频,但无法找到正确的具体信息。这是一堆问题,所以我希望有人不仅可以给我答案,还可以向我解释,以便我有很强的理解:)。以下是问题:

1)在本练习中,我们得到了一些程序代码,它们将接受两个整数作为输入,并评估哪一个拥有更大的值。此评估发生在整个代码的多个位置。编写一个程序可以用来执行相同评估的函数,而不是一遍又一遍地复制代码。首先在代码文件的开头编写一个合适的函数声明。您必须决定您的函数是否会返回一些输出。

2) 编写声明后,继续定义函数,包括将评估两个整数中哪一个最大的适当代码段。如果您之前声明您的函数将返回一个值,请务必在此处定义它将返回的内容。

3) 使用第 (1) 和 (2) 部分的结果来减少主函数中重复代码的数量,方法是将整数比较的多个实例替换为调用您创建的函数的调用。请记住,该函数将需要两个整数作为参数传入,如果您从函数返回一些值,则应该使用它(存储在变量中,输出到屏幕等)。作为一个忠告,只替换一个评估后测试你的函数是否正常工作,不要一次全部替换它们(如果该函数在第一次替换时正常工作,那么它应该适用于其他人)。

4) 由于您创建的函数只比较其参数的值而不写入它们(即更改存储在其中的值),我们应该在函数声明和定义中指定这些参数应该被视为常量。对该功能进行必要的修改并再次测试以验证该功能是否仍然有效。通过尝试在函数中包含会更改变量之一的值的操作(例如 number2 += 10;),确认函数不会让您更改参数的数据

- 这是代码(我为冗长的文字道歉):

}

0 投票
1 回答
38 浏览

dependencies - 没有传递依赖的适配器和模块化

我曾多次遇到以下情况,但找不到完全令人满意的解决方案:

我正在使用 OSGi 开发 Java 应用程序,并且遵循 OSGi 的最佳实践,它是高度模块化的。这是我的一些插件和类的摘录:

在哪里

  • DatabaseManager是直接与数据库交互的低级结构。
  • BusinessObjectManager是一个高级构造,它(除其他外)充当DatabaseManager.
  • SomeBusinessObjectManagerConsumer消费BusinessObjectManager并且不应该知道底层数据库,甚至不知道有数据库。它不应该知道DatabaseManager; 相反,它应该只与BusinessObjectManager.

到目前为止,一切都很好。但是现在SomeBusinessObjectManagerConsumer需要更新数据库中实体之间的一些边(我使用图形数据库,这意味着我的实体(通常是表中的行)是节点,它们之间的关系是边)。如前所述SomeBusinessObjectManagerConsumer,它对数据库一无所知,但它知道存在一些“业务对象”(节点)并且其中一些(边)之间存在链接。

BusinessObjectManager中,我创建了一个方法replaceLinks如下...

...这应该确保在它返回时,from业务对象只会链接到to对象,可能会删除以前的链接并添加新的链接。我想知道这些删除和添加。我创建一个界面UpdatedLinks我在插件中com.example.core.business.objectmanager

BusinessObjectManager实际上并不是要执行此链接替换并将UpdatedLinks返回对象放在一起的人。相反,它将这个委托给DatabaseManager. 因此,我在 中创建了一个等效方法DatabaseManagerBusinessObjectManager并将简单地调用此方法。

现在的问题是在哪里放置接口UpdatedLinks:它是需要的DatabaseManagerBusinessObjectManager并且SomeBusinessObjectManagerConsumer但是这些类(及其相应的插件)之间的依赖关系朝着这个方向发展:

所以:

  • 我无法UpdatedLinks放入BusinessObjectManager s 插件,因为它对于DatabaseManager.
  • 我不能把它放在DatabaseManager's 的插件中,因为那样它对于SomeBusinessObjectManagerConsumer(记住它SomeBusinessObjectManagerConsumer不知道任何关于DatabaseManager; 由于 OSGi 中的模块化,它只能访问DatabaseManager关于不想做)。
  • 把它放在某种“实用程序”插件中太具体了。
  • 我目前没有任何插件可以放置此接口,这将使所有相关插件都可以使用它。

基本上,我必须为这个界面创建一个新插件,考虑到谁将依赖它,我什至找不到该插件的任何有意义的名称。(但主要是,我反对为这个接口创建一个插件的想法,它的存在只是作为传递方法结果的replaceLinks一种手段)。

我已经多次遇到这种情况(尤其是最近使用 OSGi,因为模块化),我永远找不到完全令人满意的解决方案。在这种情况下你会/做什么?


“元”免责声明:

  • 标题可能会更好;我只是想不出更好的。随意改变它。
  • 我不确定 stackoverflow 是否适合这个问题的 StackExchange 社区,所以请随时推荐其他可能更合适的社区。我找不到更好的了。
  • 我试图详细解释,以便您可以想象这种情况。我希望我没有做得过火;)