Ich denke, das hängt von einem bestimmten Projekt ab.
Wenn beispielsweise die verschiedenen Geschäftsdomänen völlig unabhängig voneinander sind, würde ich sie nach Geschäftsdomänen organisieren.
Wenn es jedoch gemeinsamen Code zwischen den Geschäftsdomänen gibt oder die Geschäftsdomänen unterschiedliche Varianten derselben Codebasis sind, erscheint es logischer, nach technischen Domänen zu organisieren. Und wenn Sie irgendeine Art von objektorientierter Sprache verwenden, können Sie Ihre generischen Controller, Modelle usw. wahrscheinlich in Ihre unternehmensspezifischen Dateien einteilen, um sie dünner zu machen.
Es gibt auch eine (goldene) Mitte zwischen den beiden - entfernen Sie gemeinsam genutzten Code in eine eigene Domain und verwenden Sie diesen in anderen Domains. Dies gibt Ihnen das Gefühl, ein Layout zu haben, ermöglicht jedoch den gemeinsamen Code zwischen Geschäftsdomänen.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
PS. Ich denke, dass die meisten Frameworks nach technischen Domänen organisiert sind, nur weil sie dazu neigen, zu erwarten, dass Sie verschiedene Geschäftsdomänen nur dann in ein einziges Projekt mischen, wenn Sie gemeinsamen Code haben und andernfalls separate Projekte erstellen würden.
BEARBEITEN:
Angenommen, es gibt eine Web-App, die das Warenlager eines Unternehmens verwaltet. In allgemeiner Form trifft dies möglicherweise auf viele Unternehmen zu, aber jedes von ihnen hat möglicherweise einige Besonderheiten, die nicht erfüllt werden, und verbietet das Kaufen. Beispielsweise hat eines von ihnen Tablets für die Gabelstapler bereitgestellt und benötigt eine spezielle Ansicht für sie, während ein anderes dies wünscht Elemente in drei Ebenen anstatt in zwei Ebenen zu organisieren.
Sie könnten natürlich das Projekt für jedes dieser Unternehmen teilen. Wenn es das Framework / die Sprache zulässt, können Sie Unterklassen oder Plugins usw. verwenden, um Teile des allgemeinen Projekts an die Bedürfnisse jedes Kunden anzupassen und sie in den Business Domain-Layouts zu organisieren.
Wenn z. B. ein generisches Projekt nur das Element selbst nach JSON exportiert, kann Domain1 den Controller in eine Unterklasse unterteilen und auch die zuletzt aufgetretenen Übermittlungsprobleme exportieren.
Wenn Sie später feststellen, dass Domain1 eine Komponente enthält, die auch für Domain2 gültig ist, können Sie eine generische Version davon in Shared extrahieren.
Wie Sie sagten, organisieren sich viele Frameworks nach technischen Domänen, und das habe ich jetzt verwendet, nur weil meine FW der Wahl dies einfacher macht. Aber mit ein wenig (oder viel) Elbow-Fett könnte ich die Include-Pfade umschreiben, um auch das Business Domain-Layout zu unterstützen.