Подтвердить что ты не робот

Можете ли вы использовать несколько файлов .JS при разработке сложного приложения Javascript?

Исходя из фона С#, где каждый класс (лучшие практики) хранится в собственном отдельном файле, он делает разработку довольно чистой. Я никогда не писал ничего сложного в Javascript в прошлом, но начинаю изучать HTML 5, и я хочу написать сложную игру, используя холст HTML 5.

Помещение всех моих функций и кода в один файл .js кажется очень грязным. Есть ли способ разделить его или инструмент /IDE, который позволяет вам разрабатывать отдельные файлы и компилировать их в один для развертывания?

Думаю, я ищу советы по лучшей практике. Такие вопросы, как правило, закрываются, так что вот мои конкретные вопросы, чтобы придерживаться SO-FAQ, который требует практических, ответных вопросов:

  • Является ли сложная разработка JS, как правило, всем кодом, находящимся в одном JS файле? Например. вы пишете космических захватчиков, у вас просто есть spaceinvaders.js или у вас есть ship.js, logic.js и т.д.

  • Можно ли разделить JS (используя несколько тегов script или предварительно скомпилировать в один JS файл) или просто поместить все это в один файл?

  • Что такое отраслевой стандарт? Есть ли рекомендации HTML 5 какие-либо рекомендации?

4b9b3361

Ответ 1

Есть два возможных пути. Лично я бы использовал инструмент построения, чтобы упростить работу с несколькими файлами.

Использование инструмента построения

Grunt

Моим любимым инструментом для поддержки сложных js-приложений является grunt. С ворчанием вы можете развить столько файлов, сколько хотите, и использовать его плагины watch и concat для автоматического согласования их при сохранении. Вы можете сделать намного больше, но это основной вариант использования, который может быть вам полезен.

Grunt требует nodejs и занимает некоторое время для настройки. Но как только вы будете готовы с настройкой Gruntfile, это действительно ускорит процесс разработки.

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

Многие крупные библиотеки javascript используют grunt, легко узнаваемые на основе их Gruntfile: jQuery, AngularJS, Twitter Bootstrap и т.д.

Grunt также является частью инструментария разработки yeoman.

бранч

Brunch - еще один инструмент сборки, который позволяет вам делать похожие вещи, такие как grunt.

Загрузка только необходимых файлов

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

Require.js

Для этого require.js является подходящей игрой. Он позволяет загружать только нужные файлы на текущей странице. Хотя настройка require.js - это немного больше работы, чем настройка grunt.

Ответ 2

Конечно, вы можете использовать несколько файлов javascript. Как еще будут работать библиотеки, такие как jQuery или Knockout?

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

Ответ 3

вы могли бы рассмотреть использование requirejs - очень хороший libray для разделения вашего javascript на модули. он также предоставляет инструмент, который вы можете "объединить" все модули в один файл.

Ответ 4

Вы можете использовать столько файлов javascript, сколько хотите. Просто добавьте ссылку на них в код html:

<body style="background-color: black" onload="main();" >
    <!-- Your HTML body contents -->


    <!-- Your scripts (here, I used HTML5 BoilerPlate to setup, and the links to jquery are provided) -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
    <script src="js/main.js"></script>
</body>

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

function main() {
    //here you can do your basic setup or delegate the control of the app to a different .js file.
}

или обратный вызов готового документа jQuery:

$(document).ready(function() {
    //here is a good spot to hookup other jQuery listeners
});