2013-04-18 10 views
6

Attualmente sto cercando di organizzare la mia applicazione Angular in modo tale che si riduca in modo appropriato a livello aziendale. Tuttavia, sto scoprendo che sembra esserci un'eccessiva fiducia nelle convenzioni di denominazione all'interno del framework e che cercare di evitare le collisioni di denominazione è un problema reale.Denominazione delle collisioni nelle definizioni AngularJS

Ad esempio, quando si definisce qualsiasi constants/controllers/directives/factories/filters/providers/services, un nome viene alimentata al implicitamente utilizzato durante l'iniezione di dipendenza.

Questo funziona benissimo con poche definizioni. Tuttavia, quando ci potrebbero essere centinaia (forse migliaia) di queste definizioni, cercare di gestire e prevenire i duplicati sembra essere un incubo di manutenzione!

Un altro problema è la denominazione delle direttive. Poiché non sembra essere un modo per applicare qualsiasi contesto alle direttive, non è possibile avere qualcosa di simile alla seguente (cioè riutilizzare il "tasto" nome):

<toolbar> 
    <button></button> 
</toolbar> 

<customform> 
    <button></button> 
</customform> 

Quindi siamo di nuovo affidamento su convenzioni di denominazione dettagliate. Se si include il prefisso fornitore consigliato, si finisce con qualcosa di simile:

<company:toolbar> 
    <company:toolbar-button></company:toolbar-button> 
</company:toolbar> 

<company:customform> 
    <company:customform-button></company:customform-button> 
</company:customform> 

che ammetto non è orribile, ma evidenzia come il ricorso a convenzioni di denominazione può facilmente causare collisioni.

C'è qualcosa nella tabella di marcia Angolare per risolvere il problema del namespacing e quale sarebbe la soluzione (1.0.6) corrente consigliata al problema?

risposta

0

Non penso che ci sia una soluzione per questo ora. È sicuramente un problema in quanto le tue app diventano più grandi o quando devi includere moduli arbitrari che potrebbero non essere noti in fase di sviluppo. Suggerirei di archiviare un problema per questo con lo angular project.

Problemi correlati