In questo momento sto sviluppando una webapp abbastanza grande e complessa e devo gestire una quantità enorme di codice js lato client, e per semplificarmi la vita sto cercando di disaccoppiare questo codice tanto come posso.Disaccoppiare moduli javascript troppo complessi
Sono stato enormemente ispirato da Nicholas Zakas (http://www.youtube.com/watch?v=vXjVFPosQHw) e Addy Osmani (http://addyosmani.com/largescalejavascript) parlare dell'architettura scalabile di js e stava cercando di applicare alcune delle loro idee al mio lavoro.
ho separato tutto il mio codice attraverso le molteplici moduli indipendenti, e gestire tutti intercomunicazione con una sorta di mediatore . Questo approccio ha funzionato alla grande nella maggior parte dei casi. Ma ci sono alcuni casi in cui penso che non sia sufficiente.
Uno dei moduli su cui sto lavorando rappresenta una struttura piuttosto simile a una lista. Ecco alcuni esempio semplificato:
Oltre a una logica di rendering, modulo responsabile per questo pezzo di pagina deve gestire:
- impaginazione
- gruppi non girevoli
- movimento elems e gruppi in giro con dnd
- tagliare/copiare/incollare elem e gruppi
- rinfrescante certaing gruppi/elems
- certa logica all'interno elems
- può essere più roba nel prossimo futuro
avevo svolto tutta la logica estranea che ho potuto (per esempio l'editing e la logica eliminazione viene condotta ad un altro modulo tramite eventi), ma la dimensione del modulo è ancora grande (oltre 1K di linee di codice), e non so come ridurlo. Inoltre sto usando il modello di modulo per i miei moduli, quindi è ancora più difficile separare la logica tra più file.
così sono venuto qui per chiedere c'è un modo per disaccoppiare logica complessa all'interno di un unico modulo?
UPDATE:
voglio chiarire una cosa. Sono abbastanza consapevole di come posso separare i moduli ("modulo" da un modello di modulo) su più file nel mio codice.
Ma quello che veramente cercando è la nuova logica modo per separare le preoccupazioni all'interno di un singolo modulo ("modulo" dalla presentazione NKZ).
la domanda è un po 'vaga, ma in generale è possibile trattare un modulo come un programma e all'interno delle pareti del modulo è possibile creare sottomoduli, classi, tipi e funzioni pure per ridurre il disordine. i moduli autonomi sono in genere relativamente costosi, a causa del ridotto riciclo delle procedure interne; ex: una lista di sorter indipendente rispetto ad un plugin jQuery. I moduli sono meglio di un disastro, quindi sei sulla strada giusta. Padroneggiare i concetti di Dipendenza Iniezione e Inversione di Controllo è probabilmente necessario per portare il tuo scripting al livello successivo. – dandavis
Le persone interessate a questo argomento potrebbero voler controllare [t3] (http://t3js.org/), un framework JS recentemente pubblicato dallo stesso Nicolas Zakas e dal suo team a Box, che deriva direttamente dai concetti delineati nella presentazione collegato nella domanda. [Ecco qui] (https://www.box.com/blog/introducing-t3-enabling-large-scale-javascript-applications/) un post sul blog di Zakas che lo presenta. – Nobita
Ciao, questo è un po 'tardi ma potrebbe essere utile in qualche modo. https://pogsdotnet.blogspot.sg/2017/07/modular-javascript-architecture.html –