标签: modularity

CMake:如何最好地构建多个(可选)子项目?

想象一下包含几个组件的整体项目:

  • 基本
  • IO
  • 卷筒纸
  • 应用-A
  • 应用-B
  • 应用-C

现在,假设web依赖于依赖于basic的io,所有这些东西都在一个repo中并且有一个CMakeLists.txt来构建它们作为共享库.

我应该如何设置以便构建三个应用程序,如果每个应用程序都是可选的,并且可能在构建时不存在?

一个想法是在主仓库中有一个空的"apps"目录,我们可以克隆我们想要的任何应用程序回购.我们的主要CMakeLists.txt文件可以使用GLOB查找所有应用程序目录并构建它们(事先不知道将有多少个).这种方法的问题包括:

  • 显然,当你说时make,CMake不会重新发送,所以如果你添加一个新的应用程序,你必须cmake再次运行.
  • 它对进行构建的人施加了特定的结构.
  • 如何制作单个应用程序的两个克隆并将它们分别针对相同的库构建进行构建并不明显.

一般概念就像传统的递归CMake项目,但是较低级别的模块不一定事先知道哪些更高级别的模块将使用它们.但是,我不想要求用户在固定位置安装较低级别的库(例如/usr/local/lib).但是,我确实希望单个调用make来注意整个项目中已更改的依赖项,因此,如果我正在构建应用程序但已更改其中一个低级库,则所有内容都将重新编译.

modularity build cmake

20
推荐指数
2
解决办法
9311
查看次数

在JAR中打包Facelets文件(模板,包含,复合)

是否有可能把JSF2 Facelets文件与普通的内容为JAR从内部如其他Web应用程序中使用<ui:composition template>,<ui:include src>,<cc:implementation>等?如果是,我怎样才能实现这一目标?是否需要一些额外的配置?

jsf modularity jar facelets jsf-2

19
推荐指数
1
解决办法
2万
查看次数

如何从Sass样式表中仅导入变量和mixin?

我正在使用Zurb Foundation 4(S)CSS框架,我遇到了大量重复样式的问题.这是因为在每一个我的文件@import 'foundation'中,从基金会的所有样式也导入(对于规则body,.row,.button和朋友).这导致SCSS编译时间长,并且Chrome中的Web开发人员控制台难以导航,因为Zurb的所有样式都被声明了四到五次.

为了缓解这种情况,我创建了一个globalsscss文件,其中包含Foundation使用的可重写变量(它是从中复制粘贴的foundation_and_overrides.scss,然后是foundation_and_overrides导入全局变量).仅导入globals.scss文件只能在不使用Foundation mixins 的文件中删除重复.

它位于使用Foundation mixins的文件中:我可以只导入SCSS文件中的mixins,而无需导入具体的Foundation样式吗?

css modularity ruby-on-rails sass zurb-foundation

18
推荐指数
2
解决办法
1万
查看次数

ASP.NET MVC 5模块化Web应用程序架构?

我目前就职的公司正在努力应对我们的应用范围的架构决策.目前我们有几个具有共同部分的应用程序(想象日历模块).到目前为止,我们一直在从其他现有应用程序复制代码,但在未来我们希望将应用程序发展为更加模块化的设计:

我们的情况

正如您在上图中所看到的,每个应用程序可能有不同版本的模块.

我们正在考虑可能的解决方案:

  • 构建一个核心应用程序框架,我们可以在其中安装我们的模块.我们正在考虑像Nuget这样的工具来实现这一目标.
  • 构建一个应用程序,其中所有模块都包含在(=一个代码库)中,但客户只获得为他激活的功能.我们在这里预测版本化的一些问题.

有什么建议吗?我们不能成为第一个努力解决这个问题的公司吗?我们所有的应用程序都是ASP.NET MVC 4/5 Web应用程序,使用Razor模板或JavaScript模板(knockout.js)构建.我们所有的应用程序都部署在Microsoft Azure上,我们拥有丰富的内部构建知识(MSBuild),CI服务器......

c# architecture asp.net-mvc modularity knockout.js

18
推荐指数
1
解决办法
1万
查看次数

如何模块化(大型)Java App?

我手边有一个相当大的(几个MLOC)应用程序,我想分成更易于维护的单独部分.目前,该产品由大约40个Eclipse项目组成,其中许多项目具有相互依赖性.仅这一点使得连续构建系统变得不可行,因为每次签入都需要非常重建.

是否有"最佳实践"的方法

  • 识别可以立即分离的部分
  • 以视觉方式记录相互依赖性
  • 解开现有代码
  • 处理我们需要应用于库的"补丁"(目前通过将它们放在实际库之前的类路径中来处理)

如果有(免费/开放)工具来支持这一点,我会很感激指点.

尽管我对Maven没有任何经验,但它似乎强制采用非常模块化的设计.我现在想知道这是否可以迭代地进行改装,或者是否一个项目使用它必须从一开始就考虑到模块化.

编辑2009-07-10

我们正在使用Apache Ant/Ivy拆分一些核心模块.非常有用且设计精良的工具,而不是像maven那样强加给你.

我写了一些更一般的细节和个人意见,说明我们为什么在我的博客上这样做 - 这里发布的时间太长,也许每个人都不感兴趣,所以请自行决定:www.danielschneller.com

java refactoring maven-2 modularity

17
推荐指数
2
解决办法
5147
查看次数

在prolog中进行大规模编程

我试图保持我的Prolog代码模块化,我想知道是否有人对如何做到这一点有任何建议.我用简单consult的方式做这个的方式,但随着我的文件数量的增加而变得越来越麻烦,并且因为命名冲突而屈服.是否存在类似于"典型"导入的构造,例如

%-------------------------------------------------------------------- compiler.pl

[ scanner, parser, codegen ] .

%-------------------------------------------------------------------- compile

% compile( S, I ) :- Compiling the source string S gives the list of instructions
%                    I

compile( S, I ) :- scan( S, T ), parse( T, A ), codegen( A, I ) .

%-------------------------------------------------------------------------------%
Run Code Online (Sandbox Code Playgroud)

在源文件的顶部?如果它是特定于程序的,我正在使用gprolog.在此先感谢您的帮助.

modularity scalability module prolog gnu-prolog

17
推荐指数
3
解决办法
1227
查看次数

EventAggregator vs CompositeCommand

我通过Prism指导工作,并认为我掌握了他们的大多数通信工具.

命令非常简单,因此很明显DelegateCommand仅用于将View与其模型连接起来.

当涉及交叉模块通信时,特别是何时使用EventAggregation而不是复合命令时,它有点不太清楚.

实际效果是相同的,例如

  • 您发布事件 - >所有订阅者都会收到通知并执行响应代码
  • 您执行复合命令 - >执行所有已注册的命令,并使用它们附加的代码

两者都按照"发射并忘记"的方式工作,即他们在触发事件/执行命令后不关心其订户的任何响应.

我很难看到使用中的实际差异,虽然我知道两者(引擎盖下)的实现是非常不同的.

那么我们应该想一想它的实际含义 - 事件?是什么事情发生(事件发生)?用户没有像"完成网页请求"那样直接请求的内容?

和命令?这是否意味着用户点击了某些东西,从而向我们的应用程序发出命令,直接请求服务?

是吗?或者是否有其他方法可以确定何时使用其中一种通信工具而不是另一种.该指南虽然是我读过的最好的文件之一,却没有给出具体的解释.

因此,我希望参与/使用棱镜的人可以帮助揭示这一点.

modularity prism module communication eventaggregator

14
推荐指数
2
解决办法
4588
查看次数

如何使用解耦的symfony组件?

有关如何使用symfony的解耦组件的任何信息?

我正在重读文档,但除了"它们非常非常分离"的一般消息和1个使用请求和响应的教程之外,没有关于该主题的内容.

使用symfony2路由组件(symfony2之外)也有一个排名很差的答案

另外看一下独立Form组件教程并不能让我感到愉快.

我需要路由,yamlsession.

integration modularity symfony

14
推荐指数
3
解决办法
4277
查看次数

Javascript requirejs正在开发中,但在生产中编译

我开始评估JavaScript模块工具,如RequireJS用于javascript模块化.这似乎很有用,特别是在开发过程中,所以mylib-<version>.js每当我更改其中一个相关文件时,我都不需要重新编译所有的js 文件.

我的应用程序与html和javascript文件一起分发,在生产中,我想使用javascript文件的编译版本.

所以在开发中,我的html文件可能看起来像

<html>
  <head>
    <script data-main="scripts/main" src="scripts/require.js"></script>
  </head>
</html>
Run Code Online (Sandbox Code Playgroud)

但在生产中,我希望它看起来更像

<html>
  <head>
    <script src="mylib-1.0.js"></script>
  </head>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我正在分发编译文件,我不认为生产应该有任何需要引用requirejs.

有没有办法在我分发应用程序之前不必手动更改我的html文件?

javascript modularity requirejs

14
推荐指数
1
解决办法
6207
查看次数

ReactJS:如何更加模块化地使用对象的道具类型和形状?

我喜欢为每个班级明确指定我所有的道具类型.

React.createClass({
  propTypes: {
    optionalArray: React.PropTypes.array,
    optionalBool: React.PropTypes.bool,
...
Run Code Online (Sandbox Code Playgroud)

这是从阅读可重用的组件:https://facebook.github.io/react/docs/reusable-components.html

但是,如果我在很多类中使用了一个非常常见的对象,该怎么办?例如:

var MemoryForm = React.createClass({
  propTypes: {
    memory: React.PropTypes.shape({
      memoryID: React.PropTypes.number,
      content: React.PropTypes.string,
      date: React.PropTypes.object,
      dateStr: React.PropTypes.string,
      note: React.PropTypes.string
    }).isRequired,
    ...

var MemoriesArea = React.createClass({
  propTypes: {
    // The initial memory to fill the memory form with.
    formMemory: React.PropTypes.shape({ // <== shape used again
      memoryID: React.PropTypes.number,
      content: React.PropTypes.string,
      date: React.PropTypes.object,
      dateStr: React.PropTypes.string,
      note: React.PropTypes.string
    }).isRequired,
    // ...



var Playground = React.createClass({
  getInitialState: function() {
    var initVars = …
Run Code Online (Sandbox Code Playgroud)

javascript modularity reactjs

14
推荐指数
2
解决办法
6494
查看次数