Non scaricare JavaScript e CSS è stata una scelta deliberata, non un incidente o una svista.
Prima di tutto, capire che i controlli di pagina sono puramente una costruzione JavaScript - il motore del browser non ne ha assolutamente conoscenza. Il browser vede solo una porzione di DOM generata dinamicamente dagli script.
La piattaforma Web non consente di scaricare file di script: una volta caricati nel contesto, sono lì per sempre.
Con i CSS, avrebbero potuto provare a rimuovere i tag, ma si apre una lattina di worm. A seconda di quali pagine di ordine sono state indirizzate, potresti trovare diversi stili applicati nella stessa app. Cosa succede se due pagine si riferiscono allo stesso foglio di stile? Aggiungi lo stesso tag link due volte? E quale rimuovi?
È un disastro. Invece, WinJS garantisce che gli script e i fogli di stile verranno caricati una volta sola una volta, la prima volta che vengono referenziati. Quindi puoi avere ogni pagina nella tua app di riferimento "myStyles.css" e verrà caricata una sola volta (e ci sarà solo un tag di stile).
Quindi cosa fai per evitare i problemi che stai vedendo? Prima di tutto, ricorda che stai creando un'app, non un sito web che creerà arbitrariamente nuovi contenuti. Decidi i tuoi stili e classi generali. Metti lo stile condiviso nel file default.css e fai riferimento al file default.html.
Per le singole pagine, la cosa più semplice da fare è precedere gli stili con il nome della pagina. Invece di:
<div class='intro'></div>
fare
<div class='page1-intro'></div>
Poi avrete la garanzia di evitare collisioni.
Se si fa riferimento a elementi di pagina per ID, beh, non farlo. L'utilizzo di ID nelle pagine causa tutti i tipi di stranezze potenziali (cosa succede se si esegue il rendering dello stesso controllo di pagina due volte nello stesso momento? Inoltre, l'ID non esiste fino a dopo che la pagina è stata caricata nel DOM, che significa data-win- i riferimenti alle opzioni per ID non funzionano). Ma se insisti, ancora una volta, considera il prefisso degli id con la pagina.
Fondamentalmente, impostare spazi dei nomi ad-hoc per impedirti di scontrarsi. È molto più facile che estrarre manualmente i tag di collegamento e porterà a un'esperienza dell'app molto migliore rispetto alla navigazione completa.
I file di script non sono un problema, è facile nominare le funzioni per non scontrarsi o semplicemente usare WinJS.Namespace, i file css possono tuttavia essere scaricati e sembra che sarebbe sensato. Così com'è, sembra che tutti abbiano appena accettato che il namespace di tutte le classi di css è la strada da percorrere, che è davvero un hack totale ... Almeno è stato intenzionale ma a lungo termine sono sicuro che è un'altra cosa che MS sta andando per ottenere critiche per. – Endophage
Non sono sicuro di quale sia il problema oltre a caricare i file CSS quando viene caricata ogni pagina. Gli esempi ti dicono di assicurarti di assegnare un nome alle pagine; ha senso. Probabilmente si potrebbe usare LESS/SCSS per aiutare con il namespacing, come con Web Essentials o Web Workbench. – kamranicus