Дублирующие теги сценария вызывают несколько запусков?
Если у меня есть несколько <script>
теги, указывающие на один и тот же ресурс Javascript, запускается ли браузер один раз для каждого <script>
тег? Или браузер дедуплицирует?
Что происходит в этом случае?
<script src="example.js"></script>
<script src="example.js"></script>
1 ответ
example.js
запускается каждый раз, когда на него ссылается тег script. Браузер не пытается его дублировать. (Однако он может запросить его только один раз с сервера.)
Это верно даже при async
а также defer
атрибутов.
Если по какой-то причине вы хотите поддерживать дублирующиеся теги сценариев, которые приводят к тому, что код запускается только один раз, вы можете использовать технику, аналогичную включению охранников для Си.
Например, example.js
может содержать:
if (window.example === undefined) {
window.example = {
publicFunction: function publicFunction() {
// ...
},
// ...
};
}