У javascript немає імпорту / включення / необхідності, але є два основні способи досягти того, що ви хочете:
1 - Ви можете завантажити його за допомогою AJAX-дзвінка, а потім використовувати eval.
Це найпростіший спосіб, але він обмежений вашим доменом через налаштування безпеки Javascript, а використання eval відкриває двері для помилок і хак.
2 - Додайте тег сценарію з URL-адресою сценарію в HTML.
Однозначно найкращий шлях. Ви можете завантажити сценарій навіть з іноземного сервера, і це чисто, коли ви використовуєте аналізатор браузера для оцінки коду. Ви можете помістити тег у голову веб-сторінки або внизу корпусу.
Обидва ці рішення обговорені та проілюстровані тут.
Тепер є велике питання, про яке потрібно знати. Це означає, що ви віддалено завантажуєте код. Сучасні веб-браузери завантажуватимуть файл і продовжуватимуть виконувати ваш поточний сценарій, оскільки вони завантажують все асинхронно для покращення продуктивності.
Це означає, що якщо ви скористаєтесь цими трюками безпосередньо, ви не зможете використати ваш щойно завантажений код наступного рядка після того, як ви попросили його завантажити, оскільки він все ще завантажується.
EG: my_lovely_script.js містить MySuperObject
var js = document.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
document.body.appendChild(js);
var s = new MySuperObject();
Error : MySuperObject is undefined
Потім ви перезавантажуєте сторінку, натиснувши F5. І це працює! Конфуз ...
То що робити з цим?
Що ж, ви можете використовувати хак, який пропонує автор, за посиланням, яке я вам дав. Підсумовуючи це, для людей, які поспішають, він використовує en event для запуску функції зворотного дзвінка під час завантаження сценарію. Таким чином, ви можете помістити весь код за допомогою віддаленої бібліотеки у функцію зворотного виклику. EG:
function loadScript(url, callback)
{
// adding the script tag to the head as suggested before
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
// then bind the event to the callback function
// there are several events for cross browser compatibility
script.onreadystatechange = callback;
script.onload = callback;
// fire the loading
head.appendChild(script);
}
Потім ви пишете код, який хочете використовувати ПІСЛЯ сценарій завантажений у лямбда-функції:
var myPrettyCode = function() {
// here, do what ever you want
};
Потім ви запускаєте все це:
loadScript("my_lovely_script.js", myPrettyCode);
Добре. Я зрозумів. Але боляче писати всі ці речі.
Ну, і в цьому випадку ви можете використовувати як завжди фантастичний фреймворк jQuery, який дозволяє вам робити те саме в одному рядку:
$.getScript("my_lovely_script.js", function() {
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});