nomodule и "type =" module "работают по-разному для IE 11 - PullRequest
0 голосов
/ 03 марта 2020

Я тестировал функциональность nomodule и type="module" в приложении. Я использовал chrome, который загружал файл только в теге type="module", что и ожидалось. Но когда я тестировал его в IE 11, к моим файлам развлечений, загруженным из обоих тегов скрипта.

Я прикрепил изображения для справки. Пожалуйста, помогите мне понять это поведение.

index. html

<meta charset="utf-8">
<title>custom-element demo</title>
<script src="https://unpkg.com/vue"></script>
<script nomodule src="http://localhost:85/email-compose-legacy.min.js"></script>
<script type="module" src="http://localhost:85/email-compose.min.js"></script>

<email-compose-legacy></email-compose-legacy>

network tab in chrome

network tab in IE 11

1 Ответ

0 голосов
/ 04 марта 2020

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

Из этой статьи мы видим, что атрибуты nomodule и type="module" гарантируют только если сценарии будут выполнены, но не могут гарантировать, что они будут загружены:

nomodule

Этот логический атрибут установлен, чтобы указать, что сценарий не должен быть выполняется в браузерах, которые поддерживают модули ES2015.

module: код обрабатывается как модуль JavaScript.

Поэтому нам нужно только убедиться, что сценарий type="module" не будет выполнен в IE и сценарий nomodule будет выполнен в IE, что противоположно в Chrome.

Возврат к двигателю JS, Chrome использует V8 в качестве двигатель JS и IE и Edge Legacy используют Chakra в качестве двигателя JS. Вы обнаружите, что оба сценария также будут загружены в Edge Legacy. Так что я думаю, что разные JS движки ведут к разному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...