Które przeglądarki obsługują składnię importu i eksportu dla ECMAScript 6?
Obecnie piszę aplikację internetową przy użyciu stosu MEAN i próbuję napisać kod w JavaScript ECMAScript 6; jednak dostaję błędy zarówno w Chrome, jak i Firefox podczas korzystania ze składni importu i eksportu. Czy są obecnie jakieś przeglądarki, które w pełni obsługują ECMAScript 6?
Uwaga: nie pytam kiedy ECMAScript 6 będzie obsługiwany przez przeglądarki. Pytam, które przeglądarki obsługują składnię importu i eksportu ECMAScript 6. Zobacz też https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla#Features_not_yet_supported_by_Firefox
5 answers
Chrome i Firefox wsparcie import
i export
składnia (istnieją testy dla właściwe parsing ).
To, co nie jest obsługiwane, to Ładowanie modułów - nie możesz załadować modułu w żaden sposób, ponieważ specyfikacja dla niego nie jest kompletna. Musisz użyć do tego jakiegoś modułu. Nie jestem front-end developerem, ale słyszałem dobre opinie oRollup od moich współpracowników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-01 15:27:11
Jest obsługiwana w:
- Safari 10.1
- Chrome 61
- Firefox 54 - za dom.moduleScripts.włączone ustawienie w about: config.
- Edge 16
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 08:03:29
Teraz jest pollyfill , którego możesz użyć do zaimportowania modułu ES6.
Przetestowałem go pomyślnie na Chrome.
Oto link: http://github.com/ModuleLoader/browser-es-module-loader
Jest również zaimplementowany natywnie w Edge 14:
Https://blogs.windows.com/msedgedev/2016/05/17/es6-modules-and-beyond
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-25 23:35:46
Jak już powiedzieli inni, poparcie dla niego jest nadal bardzo ograniczone. Ale nawet jeśli było pełne poparcie.... czy mądrze byłoby go użyć? Jak mielibyśmy to zrobić?
Pomyśl o tym. Typowa aplikacja JS napisana z modułami Node JS z łatwością zawiera dziesiątki, a nawet setki (bardzo małych) pakietów. Czy naprawdę chcemy aż tylu próśb? Browserify, Webpack, Rollup itp. są tak popularne, ponieważ pozwalają nam połączyć wiele małych pakietów w jedno szybkie pobieranie. Z podziałem kodu możemy pozwolić, aby moduł bundler decydował w czasie transpilacji, na podstawie kodu, którego faktycznie używają nasze strony i niektórych ustawień konfiguracyjnych, ile pakietów utworzyć i co umieścić w każdym z nich. W ten sposób możemy napisać wiele małych pakietów i służyć im jako (kilka) duże pakiety.Chodzi mi o to, że powinniśmy podzielić nasz kod na pakiety, które działają dobrze na poziomie koncepcyjnym, a następnie połączyć te pakiety w pakiety, które działają dobrze na poziomie technicznym (sieciowym). Jeśli piszemy nasz kod w oparciu o optymalny rozmiar pakietu sieciowego, kończymy na poświęceniu modułowości w tym procesie.
W międzyczasie używanie go prawdopodobnie tylko zwiększy zamieszanie. Na przykład spójrz na przykład na blogu Edge:
import { sum } from './math.js';
Zauważ jak dodają rozszerzenie .js
do from
? W Node JS Zwykle zapisujemy to jako:
import { sum } from './math';
Czy powyższy kod będzie działał również na Edge? A co z nazwanymi pakietami? Obawiam się, że zobaczymy tu wiele niezgodności, zanim dowiedz się, jak sprawić, by te ścieżki działały na całej planszy.
Zaryzykowałbym przypuszczenie, że dla większości programistów System.import
pozostanie w większości niewidoczny w przeglądarkach i że tylko oprogramowanie do łączenia w Pakiety zacznie z niego korzystać (dla celów wydajności), gdy stanie się głównym nurtem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-27 15:08:21
Zgodnie z Google ' s Javascript Style Guide :
Nie używaj jeszcze modułów ES6 (tj. słów kluczowych
export
iimport
), ponieważ ich semantyka nie jest jeszcze sfinalizowana. Należy pamiętać, że niniejsza polityka będzie być ponownie odwiedzane, gdy semantyka są w pełni standardowe.
// Don't do this kind of thing yet:
//------ lib.js ------
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
//------ main.js ------
import { square, diag } from 'lib';
Jednak import
i export
są zaimplementowane w wielu transpilerach, takich jak kompilator Traceur, Babel czy Rollup.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 16:47:38