2012-06-25 4 views
2

Я создаю движок игры HTML5. Существует только один файл, который должен быть включен в файл HTML, который является engine.js. Предполагается, что этот сценарий создает глобальный объект Engine, который пользователь может использовать в других сценариях. Объект Engine является оболочкой для всех классов и функций в движке, но я хотел бы разделить двигатель на разные файлы. Я думаю, что это было бы немного неряшливо, если бы все были включены пользователем, поэтому как я могу включить engine.js автоматически?Как включить скрипты Javascript внутри Javascript на стороне клиента?

(что-то вроде требуют() в Node.js.)

+0

Вы собираетесь получить тонну ответов .... – Hassan

+0

Я думаю, нет .... – Hassan

ответ

4

Посмотрите на RequireJS. Это библиотека, которая соответствует вашим требованиям.

2

Один из вариантов заключается в использовании javascript для компилятора javascript, например, Closure Tools. Используя RequireJs, ваш клиент все равно будет делать несколько HTTP GET для получения каждого файла (IIRC), , используя инструменты закрытия, ваши отдельные файлы javascript будут объединены в один (также сокращенный и лишенный мертвого кода).

Это связано с профи и минусы, некоторые минусы включают,

  • Less повторного использования кэша пользователей
  • полной перезарядку при изменении какого-либо одного файла
1

чистый JavaScript подход не столь прост, как вы МИГ ht ожидать, так как JS может работать только свое волшебство, когда предварительные проверки пройдены. Включение скриптов с JavaScript возможно; однако использование «глобального масштаба» еще более не соответствует требованиям, чем в противном случае.

window.onload = function() 
{ 
    var newScript = document.createElement('script'); 
    newScript.type = 'text/javascript'; 
    newScript.src = 'scripts/yourScript.js'; 
    newScript.onload = yourNormalOnload; 
    // or newScript.onreadystatechange = yourNormalOnload; 
    document.body.appendChild(newScript); 
} 

function yourNormalOnload() 
{ 
    //use whatever functions declared in yourScript.js here 
} 

В этом примере yourNormalOnload функция будет ваш сценарий, но для того, чтобы иметь доступ к сценарию вы получите на лету, вы должны обернуть все это в функции обратного вызова, который вызывается после того, как включен скрипт. К счастью, добавление скрипта вызывает событие onload или onreadystatechange, поэтому вы можете слушать это.


Вы можете прочитать this ответ, код почти такой же, но предлагает гораздо больше объяснений, чем я.

Смежные вопросы