Внедрение зависимостей JavaScript через динамический тег <script> - PullRequest
2 голосов
/ 15 сентября 2011

Использование JSONP в vanilla JavaScript через создание тега <script> с src заставило меня задуматься об использовании этого же метода для внедрения зависимостей в плагинах JavaScript и других компонентах JavaScript, которые используют библиотеки, но хотят быть настолько независимыми, насколько это возможно.

Использование jQuery в качестве примера популярной библиотеки, которую потенциально необходимо внедрить ...

// make sure we don't load it if already loaded.
if (typeof jQuery === 'undefined') {
    var dependency = document.createElement('script');
    dependency.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(dependency);
}

window.onload = function() {
    // jQuery is now available w/o the extra <script> tag added by the end user...
}

Действительно, на данный момент это в основном концептуально (, но работает ), но мне интересно, можно ли считать это приемлемым решением для внедрения зависимостей JavaScript? Есть мысли по этому поводу?

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Перед реализацией этого трюка, вы должны рассмотреть , почему это необходимо. Допустимо использовать метод, когда ваш код жизненно важен и должен использоваться в неизвестных средах. Когда вы создаете веб-плагин, для внешних веб-сайтов старайтесь заставить разработчика включать необходимые библиотеки. Это более эффективно, а также более надежно.

Что касается вашего примера: поместите код в (анонимную) функцию, чтобы не заполнять глобальную область видимости ненужными переменными.

0 голосов
/ 15 сентября 2011

Да, я полагаю, что это концепция google.load().

...