Im Moment entwickle ich ziemlich große und komplexe Webapp und habe mit einer großen Menge von Client-Seite Js-Code zu tun, und mein Leben leichter zu machen, ich versuche, diesen Code so viel zu entkoppeln so wie ich kann.Entkopplung zu komplex Javascript-Module
Ich wurde sehr inspiriert von Nicholas Zakas (http://www.youtube.com/watch?v=vXjVFPosQHw) und Addy Osmani (http://addyosmani.com/largescalejavascript) sprach über skalierbare js Architektur und versuchte, einige ihrer Ideen auf meine Arbeit anzuwenden.
Ich habe getrennt alle meine Code über die mehreren unabhängigen Modulen und behandeln alle Interkommunikation mit irgendeiner Art von Mediator. Dieser Ansatz funktionierte in den meisten Fällen sehr gut. Aber es gibt einige Fälle, in denen ich denke, ist nicht genug.
Eines der Module, an denen ich arbeite, repräsentiert eine ziemlich komplexe listenähnliche Struktur. Hier einige vereinfachtes Beispiel:
Neben einigen Rendering-Logik-Modul für dieses Stück Seite sollte behandeln:
- Paginierung
- Makeln Gruppen
- bewegen elems und Gruppen um mit dnd
- schneiden/kopieren/kleben elems und gruppen
- erfrischend certaing Gruppen/elems
- einige Logik innerhalb elems
- mehr Sachen in der nächsten Zukunft sein können
Ich hatte alle nicht verwandte Logik durchgeführt, die ich (zB Bearbeitung könnte und Löschen von Logik erfolgt zu einem anderen Modul über Ereignisse), aber Modulgröße ist immer noch groß (über 1K Zeilen Code), und ich weiß nicht, wie man es reduziert. Außerdem verwende ich Modulmuster für meine Module, so dass es noch schwieriger ist, die Logik zwischen mehreren Dateien zu trennen.
So kam ich hier zu fragen, gibt es eine Möglichkeit, komplexe Logik in einem einzigen Modul zu entkoppeln?
UPDATE:
ich etwas klarstellen wollen. Ich bin ziemlich bewusst, wie ich Module ("Modul" aus einem Modulmuster) über mehrere Dateien in meinem Code trennen kann.
Aber was ich wirklich für die Suche ist die neue logische Art und Weise betrifft innerhalb eines einzelnen Moduls zu trennen („Modul“ von NKZ Präsentation).
Ihre Frage ist ein bisschen vage, aber im Allgemeinen können Sie ein Modul wie ein Programm behandeln, und innerhalb der Wände des Moduls können Sie Untermodule, Klassen, Typen und reine Funktionen erstellen, um das Durcheinander zu reduzieren. in sich geschlossene Module sind typischerweise relativ teuer, aufgrund der verringerten internen Verfahrensrecycling; ex: ein eigenständiger Listensorter im Vergleich zu einem jQuery-Plugin. Module sind besser als Unordnung, also sind Sie auf dem richtigen Weg. Es ist wahrscheinlich erforderlich, dass Sie die Konzepte Dependency Injection und Inversion of Control beherrschen, um Ihr Scripting auf die nächste Stufe zu bringen. – dandavis
Leute, die sich für dieses Thema interessieren, können sich [t3] (http://t3js.org/), ein kürzlich von Nicolas Zakas und seinem Team bei Box veröffentlichtes JS-Framework, ansehen, das direkt aus den in der Präsentation skizzierten Konzepten stammt in der Frage verknüpft. [Hier ist] (https://www.box.com/blog/introducing-t3-enciling-large-scale-javascript-applications/) ein Blogbeitrag von Zakas, der es einführt. – Nobita
Hallo, das ist ein bisschen spät, aber könnte irgendwie hilfreich sein. https://pogsdotnet.blogspot.sg/2017/07/modular-javascript-architecture.html –