2015-01-29 13 views
17

Sto lavorando a un grande progetto angluar e ovviamente abbiamo bisogno di un modo per caricare i nostri script pigri.Angularjs: ocLazyLoad vs Requirejs

Ho già lavorato con require.js ed è abbastanza buono, ma il problema è che dopo aver concatenato e minimizzato i nostri file, abbiamo ottenuto un file js di 1,5 milioni.

Quindi ho appena visto OcLazyload e sembra promettente, ma ho visto molti esempi sul web che utilizzano sia require che ocLazyLoad, sono un po 'confuso sul motivo per cui si vorrebbe usare entrambi. Non stanno entrambi facendo la stessa cosa?

+1

noti che usare RequireJS è possibile caricare alcuni file su richiesta, cioè solo quando in realtà ne hanno bisogno (ad esempio in una direttiva o simili). Quindi mantieni il tuo pacchetto "minified" piccolo con solo ciò che deve essere caricato inizialmente. – floribon

+0

@floribon - ma OcLazyLoading fa lo stesso e può persino integrarsi con ui-router e caricare i file per stato – Tomer

+3

Stavo rispondendo alle tue preoccupazioni sulla dimensione del bundle. Ma non sapevo di ocLazyLoading e suona fantastico perché ho sempre voluto farlo. Non si escludono a vicenda, e ocLazyLoading ha bisogno di un motore di gestione delle dipendenze, che di default è $ script.js ma a quanto pare è possibile utilizzare RequireJS, quindi il mio sarebbe di utilizzare entrambi. – floribon

risposta

15

Avete bisogno sia di ocLazyLoad che di RequireJS perché con voi ora gestite due concetti di moduli separati: i vostri moduli javascript e i moduli angolari interni.

Dopo il bootstrap iniziale, angularjs non consente più la registrazione di nuovi moduli e componenti come direttive e controller (almeno non utilizzando il modo standard).

RequireJS solo i carichi javascript file ma non registra i nuovi moduli e componenti angolari in questo nuovo codice

Che cosa significa ocLazyLoad è quello di consentire di caricare i file aggiuntivi utilizzando un terzo modulo di caricatore come RequireJS e la cosa più importante - registra in modo angolare i nuovi moduli e componenti nel codice caricato pigramente.

In sintesi, è possibile caricare pigramente il codice utilizzando solo RequireJS, ma non è possibile caricare moduli e componenti angolari solo con RequireJS. C'è bisogno di un lavoro extra, come quello eseguito da ocLazyLoad.

+2

Non carica automaticamente le risorse da solo? Perché usare entrambi se puoi semplicemente usare oclazyload? – rebelliard

+0

Non è necessario. Ma la domanda è l'una contro l'altra. –

30

È possibile utilizzare RequireJS con ocLazyLoad ma non lo consiglio, è possibile solo perché le persone mi hanno chiesto di farlo ed è stato facile integrarlo. Non è necessario RequireJS perché ocLazyLoad include i propri programmi di caricamento per i file js/css/templates e può caricare qualsiasi tipo di file, non solo moduli angolari.

Se si desidera caricare i moduli angolari in modo lazy, è necessario registrarli con Angular (o attendere Angular 1.5 che consenta di eseguirlo).

Linea di fondo è: si può usare con RequireJS ocLazyLoad, o semplicemente ocLazyLoad (consigliato), ma non è possibile utilizzare solo RequireJS

+0

Ottima spiegazione. Ma ho avuto dubbi durante l'implementazione di oclazyload. Utilizzando oclazyload, è facile da caricare. quando si arriva a caricare le dipendenze, in require js, se ho accennato ai deps nello shim, caricherà automaticamente la dipendenza. Ma in oclazyload, devo menzionare manualmente ogni dipendenza per ogni routing. Esiste un riutilizzo del codice come requirejs per il caricamento delle dipendenze? –

+0

Esiste un responsabile delle dipendenze? –

+0

Penso che requirejs mantenga le dipendenze. È facile inserire il codice per le dipendenze. OcLazyLoad con requirejs offre uno migliore per gestire il codice e per la riusabilità. –