2015-01-13 11 views
15

Chcę wyeksportować moduł przy użyciu składni ES6, tylko jeśli jest on obsługiwany w bieżącym środowisku wykonawczym. Celem jest opracowanie biblioteki obsługującej różne systemy zarządzania modułami.Jak wykrywać funkcje modułów es6

Jak export jest słowem kluczowym, coś rzuci błąd składni:

typeof export 
+1

nawet w ES5 "export" i "import" nie są zastrzeżonymi słowami kluczowymi i powoduje to błąd składniowy, którego nie można przechwycić – krampstudio

+0

Myślę, że powinieneś użyć składni ES6; i rozpowszechnia wersję skompilowaną od 6 do 5. – Bergi

+0

możliwy duplikat [Jak mogę wykryć funkcje generatorów ES6?] (Http://stackoverflow.com/questions/23096064/how-can-i-feature-detect-es6-generators) – JJJ

Odpowiedz

4

Revision 27 spec miał Reflect.Loader API, które mogłyby być wykorzystane do modułu refleksji.

Chociaż nie jest to bezpośrednie wykrywanie cech samego słowa kluczowego eksportu, możliwe, że można załadować moduł, który używa słów kluczowych eksportu z danych-uri, a następnie sprawdzić, czy nie generuje błędów analizy.

ale został usunięty z przeglądu 28, z następującym zmian z pozycji:

Usunięto rurociąg ładowarki i Reflect.Loader API (funkcjonalność przenoszone do oddzielnego opisu)


Tak więc, o ile mogę powiedzieć, specyfikacja nie wydaje się zapewniać żadnego sposobu wykrywania cech w momencie pisania.

W przyszłości może być możliwe z Reflect.Loader lub jego zamiennikami.

Edycja: The loader spec wydaje się być rozwijany zarządzany przez whatwg, ale nie jest jeszcze w stanie, z którego moglibyśmy wyprowadzić detekcję funkcji.

+0

Ma to przyszłość już przybyła? – vsync

+0

Jeśli propozycja https://github.com/domenic/proposal-import-function staje się rzeczywistością ([w etapie 2] (https://github.com/tc39/proposals/blob/master/README.md) right teraz) z łatwością sprawdzimy, czy 'typeof import === 'function'' – krampstudio