Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подключение import в js коде (https://javascript.ru/forum/events/79402-podklyuchenie-import-v-js-kode.html)

zava75 03.02.2020 17:48

Подключение import в js коде
 
Добрый день всем. Скажите как правильно и можно ли подключить с удаленного репозитория js в самом js файле .
Например есть //web.com/js.js
есть в сайте подключения к main.js в самом main.js как можно подключить //web.com/js.js ?

Vlasenko Fedor 03.02.2020 18:37

https://requirejs.org/

Malleys 04.02.2020 07:00

Poznakomlus, я вам не рекомендую использовать https://requirejs.org/, поскольку он заставляет писать нестандартный код. И тем более в JS есть понятие модуля (ключеные слова import и export) https://requirejs.org/ выглядит как костыль!

Цитата:

Сообщение от zava75
есть в сайте подключения к main.js в самом main.js как можно подключить https://web.com/js.js?

Если https://web.com/js.js ведёт к модулю, который что-то экспортирует, то вы можете его подключить при помощи ключевого слова import. Например...

файл main.js
import myObject from "https://web.com/js.js";

// тут можно использовать ваш myObject
(Если вам нужна поддержка старых браузеров, то вы можете использовать parcel)


Если https://web.com/js.js ведёт к файлу, который содержит скрипт, который объявляет что-то глобально (и ничего не экспортирует), то вы можете его подключить при помощи функции import. Например...

файл main.js
import("https://web.com/js.js").then(() => {
	// тут можно использовать ваш глобальный объект
});

Vlasenko Fedor 04.02.2020 12:31

Malleys,
Он был одно время популярен и в нем была возможность работы с разными типами модулей. Рейтинг 12,4 k GitHub
То, что вы рекомендуете оправдано в разаработке современных разработок откидывая старые версии броузеров
Когда то import небыло, тем более parcel. И сейчас совместимость с браузерами бывает отталкивает.
Ранее использовал нечто подобное

var loader = (function (src, callback) {
    var doc = window.document, cache = {};
    return function (src, callback) {
        if (cache.hasOwnProperty(src)) {
            callback && (callback());
        } else {
            var el = doc.createElement('script'), loaded = 0;
            el.src = src, doc.body.appendChild(el), cache[src] = 1;
            if (callback) {
                el.onload = el.onreadystatechange = function () {
                    if ((el.readyState && el.readyState !== 'complete' && el.readyState !== 'loaded') || loaded)
                        return false;
                    el.onload = el.onreadystatechange = null, loaded = 1, callback();
                };
            }
        }
    };
}());
loader('test1.js', me);
function me() {
    alert('This callback Me');
}

voraa 04.02.2020 12:47

Если постоянно думать о браузерах 5-ти летней давности и старше, то почти ни чем нельзя пользоваться.

Vlasenko Fedor 04.02.2020 12:54

voraa,
это да, но вебкомпоненты в пример мы ждем очень долго иначе большинство фреймворков пошло в утиль
зачастую перед разработкой смотрят процент использования браузеров и ставят в версси тз минимальные значения.
и есть полифилы, и RequireJS works in IE 6+, Firefox 2+, Safari 3.2+, Chrome 3+, and Opera 10+.

voraa 04.02.2020 13:15

Цитата:

Сообщение от Poznakomlus (Сообщение 519611)
voraa,
IE 6+, Firefox 2+, Safari 3.2+, Chrome 3+, and Opera 10+.

И каков % таких браузеров?

voraa 04.02.2020 13:22

Мне кажется, что сознательная ориентация на старье не побуждает пользователей обновлять браузеры.
По мне нормально, если разработчик ориентируется на сегодня - 3 года.
Если на платформе существуют хотя бы пара браузеров, которые поддерживают технологию или api, то на них и нужно ориентироваться.

Vlasenko Fedor 04.02.2020 13:31

Цитата:

Сообщение от voraa
не побуждает пользователей обновлять браузеры

есть sandbox системы
вы спрашиваете процент старых браузеров, я привел данные из документации это минимальные версии браузеров
Цитата:

Сообщение от voraa
на платформе существуют хотя бы пара браузеров

здесь не понял совсем
понятно, что все мы разрабатываем с учетом современных технологий, но если стоит задача поддержка старых версий то это да решение

voraa 04.02.2020 13:40

[quote=Poznakomlus;519616
здесь не понял совсем
[/QUOTE]
Зачем ориентироваться на ИЕ6-11, Когда в Винде есть Хром, Опера, Лис? Совершенно бесплатные.
И почему ИЕ6, а не ИЕ4 или НетскэйпНавигатор

Ну представьте, если бы производители игр (или более нужных программ) ориентировались на Вин-95 на Пентиуме-4? Но сайтопрограммеры почему то принуждают себя (или принуждаются) к этому.


Часовой пояс GMT +3, время: 04:56.