Desidero conservare un documento json per archiviare alcuni dati semplici e desidero richiedere questo documento e utilizzare l'oggetto json in una chiamata define()
in modo da poterlo utilizzare. Questa non è una chiamata "asincrona". Voglio dire che dovrebbe essere per lo sviluppo, ma voglio compilare il file su build a differenza di una chiamata asincrona effettiva da un'API, in cui il contenuto è dinamico.requirejs carica file JSON statico
risposta
Il modo più semplice per farlo è utilizzare il plugin requirejs json per questo, questo ti permetterà di includere anche il tuo file nella build.
https://github.com/millermedeiros/requirejs-plugins
Ecco un esempio:
require(['json!someFile.json'], function(data){
...
})
// It does not actually need to be a .json extension, this will work to:
require(['json!someFile'], function(data){
...
})
Se si desidera includere il file nel r.js costruire in modo che sia sempre ottimizzato nel file di bootstrap principali/js bisogna aggiungerlo all'opzione di inclusione
Si potrebbe anche utilizzare il necessario js text plugin per questo, in genere viene utilizzato per caricare i file di modello ma è possibile utilizzarlo per caricare anche i file .json.
https://github.com/requirejs/text
Si dovrà analizzare il contenuto vostra auto poi con JSON.parse
(Include json2.js per fornire il supporto per i browser meno recenti, se quello che serve)
Si potrebbe anche avvolgere il JSON in esso la propria definire() in modo da poterlo richiedere tradizionalmente, ma ciò non funzionerà se si è limitati a un file .json
effettivo.
Un'altra opzione è richiedere il file di testo tramite ajax, con jquery o qualcosa del genere.
$.get('somefile.json', function(data) {
// do something with your data
});
Sono andato con 'requirejs-plugins' e ha un plugin' json' che ho completamente trascurato. Tuttavia usa 'text' come dipendenza. Quindi grazie! Ho appena iniziato a lavorare con requirejs oggi sul browser ed è fantastico. Spero ancora che quando costruisco smetterà di usare ajax per recuperare il documento. – ThomasReggi
@ThomasReggi controlla la mia risposta adattata per informazioni su quello –
Ho problemi con l'utilizzo del testo! per contenuti JSON se combinato con r.js per l'ottimizzazione. Solo un avviso. – SimplGy
questo distacco di una risposta, perché:
- è ciò che l'utente pone la domanda effettivamente utilizzato come soluzione
- è più pulita da guardare che richiede il testo, dal momento che fa sempre la JSON.parse() per te.
RequireJS has a JSON plugin. La sintassi è semplicemente:
require(['json!someData.json'], function(data){
...
})
per coloro che trovano questo poco chiaro, ["json!/Some/ajax/endpoint"] funziona molto bene – penguat
È possibile caricare il file locale? – Erik
@erik Normalmente utilizzo un web server (tramite gulp) per svilupparlo localmente, quindi carica sempre un URL http: // o https: //. Ti consiglierei di fare lo stesso. Se stai chiedendo del file: // URL, non lo so. – mikemaccana
Esattamente qual è la tua domanda allora? perché non vedo alcun problema con quello. –
@ WillemD'haeseleer Beh, non sono sicuro di come dovrei farlo. Non riesco a includere un file '.json' nei percorsi. – ThomasReggi