2015-01-13 15 views
15

Desidero esportare un modulo utilizzando la sintassi ES6 solo se è supportato nel runtime corrente. L'obiettivo è sviluppare una libreria che supporti diversi sistemi di gestione dei moduli.Come rilevare la presenza di moduli es6

Come export è una parola chiave, qualcosa di simile a getterà un errore di sintassi:

typeof export 
+1

nemmeno in ES5 'export' e' import' sono parole chiave riservate e solleva un errore di sintassi che non può essere rilevato – krampstudio

+0

Penso che dovresti usare la sintassi ES6; e distribuire una versione compilata da 6 a 5. – Bergi

+0

possibile duplicato di [Come è possibile rilevare i generatori ES6?] (Http://stackoverflow.com/questions/23096064/how-can-i-feature-detect-es6-generators) – JJJ

risposta

4

Revision 27 delle specifiche API aveva un Reflect.Loader che potrebbe essere utilizzato per il modulo di riflessione.

Anche se questo non è il rilevamento diretto della funzione per la parola chiave export in sé, potrebbe essere stato possibile caricare un modulo che utilizza parole chiave di esportazione da un uri di dati e quindi verificare se genera errori di analisi o meno.

Ma è stato rimosso con la revisione 28, con la seguente changelog:

Rimosso conduttura caricatore e Reflect.Loader API (funzionalità viene trasferito alla specifica separata)


Quindi, per quanto posso dire, le specifiche non sembrano fornire alcun modo di rilevamento di funzionalità al momento della scrittura.

In futuro potrebbe essere possibile con Reflect.Loader o le sue sostituzioni.

Modifica: Lo loader spec sembra essere sviluppato gestito dal whatwg, ma non è ancora in uno stato da cui potremmo derivare il rilevamento di funzionalità.

+0

il futuro è arrivato ancora? – vsync

+0

Se la proposta https://github.com/domenic/proposal-import-function diventa una realtà ([nella fase 2] (https://github.com/tc39/proposals/blob/master/README.md) destra ora) controlleremo facilmente 'typeof import === 'function'' – krampstudio

Problemi correlati