Определить совместимость импорта ES6

Я понимаю, что вы можете обнаружить функции в javascript с помощью чего-то вроде этого

if(xmlhttprequest){
console.log("this browser is ajax compatible");
}

Я также понимаю, что импорт ES6 изначально совместим с некоторыми браузерами, если включены определенные настройки режима разработки. то есть

import {someExport} from './someModule.js';

мой вопрос

Можно ли обнаружить «Импорт» в том же виде, что и объект? если да, то как это можно сделать? Можно ли импортировать весь файл JS (чтобы можно было импортировать Javascript ES5, который не использует экспорт)

Я пытался использовать синтаксис if(object) с различными вариациями (в том числе с оператором from и без него), но пока безуспешно.

Моя причина для этого: я создал функцию javascript, которая опирается на Jquery и GreenSock, и хочу, чтобы скрипт автоматически импортировал их в совместимые браузеры, чтобы разработчику не приходилось вручную добавлять несколько библиотек JS.


person megaman    schedule 03.07.2017    source источник


Ответы (2)


Можно с уверенностью предположить, что все браузеры, поддерживающие синтаксис импорта/экспорта модулей в стиле ES6, могут загружать модули через теги script, используя type="module". Эти браузеры также предлагают атрибут для тегов сценария, который называется nomodule. Таким образом, вы можете обнаружить поддержку внутри JavaScript следующим образом:

'noModule' in HTMLScriptElement.prototype

(обратите внимание на заглавную букву «M» в имени свойства, а не в атрибуте HTML)

person Cref    schedule 30.07.2018

Рассматривали ли вы возможность использования атрибута nomodule в скрипте?

Пример

<script type="module">
  window.imports = true;
  import './app-shell-es.js';
</script>

<script src="app-shell.js" nomodule></script>

Источник: модули ECMAScript в браузерах

person Glenn Vandeuren    schedule 06.09.2017