Как связать два файла js

Обновлено: 23.04.2024

Есть ли в JavaScript что-то похожее на @import в CSS, что позволяет включать файл JavaScript в другой файл JavaScript?

В старых версиях JavaScript не было импорта, включения или требования, поэтому было разработано много разных подходов к этой проблеме.

Но с 2015 года (ES6) JavaScript имеет стандарт ES6 для импорта модулей в Node.js. , что также поддерживается большинством современных браузеров.

Для совместимости со старыми браузерами создайте такие инструменты, как Webpack и накопительный пакет и / или инструменты переноса, такие как Babel.

Модули ECMAScript (ES6) поддерживаются в Node.js начиная с версии 8.5, с > флаг, и, по крайней мере, Node.js v13.8.0 без флага. Чтобы включить «ESM» (по сравнению с предыдущей системой модулей CommonJS в стиле Node.js [«CJS»]), вы либо используете "type": "module" в package.json , либо даете файлам расширение .mjs . (Аналогично, модули, написанные с помощью предыдущего модуля CJS Node.js, могут называться .cjs , если по умолчанию используется ESM.)

Используя .mjs , вы получите module.mjs :

Модули ECMAScript в браузерах

Браузеры поддерживают загрузку модулей ECMAScript напрямую (не требуются такие инструменты, как Webpack) с тех пор Safari 10.1, Chrome 61, Firefox 60 и Edge 16. Проверьте текущую поддержку по адресу caniuse. , Нет необходимости использовать расширение .mjs Node.js; браузеры полностью игнорируют расширения файлов в модулях / скриптах.

Динамический импорт в браузерах

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

Более старый стиль модуля CJS, который до сих пор широко используется в Node.js, это module.exports / > система.

Существуют и другие способы включения JavaScript внешнего содержимого в браузеры, которые не требуют предварительной обработки.

Вы можете загрузить дополнительный скрипт с помощью вызова AJAX, а затем использовать eval для его запуска. Это самый простой способ, но он ограничен вашим доменом из-за модели безопасности песочницы JavaScript. Использование eval также открывает путь к ошибкам, взломам и проблемам безопасности.

Как и в случае динамического импорта, вы можете загрузить один или несколько сценариев с помощью вызова fetch , используя обещания для управления порядком выполнения зависимостей сценариев, используя Fetch Inject:

Библиотека jQuery обеспечивает загрузку в одну строку:

Вы можете добавить тег HTML с URL-адресом скрипта в HTML. Чтобы избежать накладных расходов jQuery, это идеальное решение.

Скрипт может даже находиться на другом сервере. Кроме того, браузер оценивает код. Тег может быть вставлен в веб-страницу или вставлен непосредственно перед закрывающим тегом .

Вот пример того, как это может работать:

Эта функция добавит новый тег в конец раздела заголовка страницы, где атрибут src установлен на URL, который присвоен функции в качестве первого параметра.

Теперь есть большая проблема, о которой вы должны знать. Это подразумевает, что вы загружаете код удаленно . Современные веб-браузеры загружают файл и продолжают выполнять ваш текущий скрипт, потому что они загружают все асинхронно для повышения производительности. (Это относится как к методу jQuery, так и к методу ручной динамической загрузки скрипта.)

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

Например: my_lovely_script.js содержит MySuperObject :

Затем вы перезагрузите страницу, нажав F5 . И это работает! Смешение .

Так что с этим делать?

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

Затем вы пишете код, который хотите использовать ПОСЛЕ того, как скрипт загружается в лямбда-функцию:

Затем вы запускаете все это:

Обратите внимание, что сценарий может выполняться после загрузки DOM или раньше, в зависимости от браузера и от того, включена ли строка script.async = false; . Существует отличная статья о загрузке Javascript в целом, в которой это обсуждается.

Как упоминалось в верхней части этого ответа, многие разработчики используют в своих проектах инструменты сборки / переноса, такие как Parcel, Webpack или Babel, что позволяет им использовать предстоящий синтаксис JavaScript, обеспечивать обратную совместимость для старых браузеров, объединять файлы, минимизировать, выполнять разбиение кода и т. д.

Другой способ, который, на мой взгляд, намного чище, - это сделать синхронный Ajax-запрос вместо использования тега . Именно это и включает Node.js.

Вот пример использования jQuery:

Затем вы можете использовать его в своем коде, как если бы вы обычно использовали include:

И сможете вызвать функцию из необходимого скрипта в следующей строке:

Если вы используете веб-работников и хотите включить дополнительные сценарии в области работника, другие ответы о добавлении сценариев в тег head и т. д. не будут работать для вас.

К счастью, веб-работники имеют свою собственную importScripts функцию, которая является глобальной функцией в области веб-работника, родной для самого браузера, так как она является частью спецификации.

В качестве альтернативы, в качестве второго наиболее высоко оцененного ответа на ваш вопрос выделяет, RequireJS также может обрабатывать включая скрипты внутри Web Worker (вероятно, вызывающего сам importScripts , но с несколькими другими полезными функциями).

У меня была простая проблема, но я был озадачен ответами на этот вопрос.

Мне пришлось использовать переменную (myVar1), определенную в одном файле JavaScript (myvariables.js) в другом файле JavaScript (main.js).

Для этого я сделал, как показано ниже:

Загрузил код JavaScript в HTML-файле, в правильном порядке, сначала myvariables.js, затем main.js:

Как вы видели, я использовал переменную в одном файле JavaScript в другом файле JavaScript, но мне не нужно было включать одну в другой. Мне просто нужно было убедиться, что первый файл JavaScript загружен до второго файла JavaScript, а переменные первого файла JavaScript доступны во втором файле JavaScript автоматически.

Это спасло мой день. Надеюсь, это поможет.

Если кто-то ищет что-то более сложное, попробуйте RequireJS. Вы получите дополнительные преимущества, такие как управление зависимостями, улучшенный параллелизм и избежание дублирования (то есть получение сценария более одного раза).

Вы можете записать свои файлы JavaScript в «модули», а затем ссылаться на них как на зависимости в других скриптах. Или вы можете использовать RequireJS как простое решение «иди и получи этот скрипт».

Определите зависимости как модули:

creation.js - это ваш "основной" файл JavaScript, который зависит от some-dependency.js

Выдержка из GitHub README:

RequireJS загружает простые файлы JavaScript, а также более определенные модули. Он оптимизирован для использования в браузере, в том числе в Web Worker, но может использоваться в других средах JavaScript, таких как Rhino и Node. Он реализует API асинхронного модуля.

RequireJS использует простые теги скрипта для загрузки модулей / файлов, поэтому он должен Позвольте для легкой отладки. Может использоваться просто для загрузки существующих Файлы JavaScript, поэтому вы можете добавить его в свой существующий проект без необходимость переписать ваши файлы JavaScript.

.

Вот синхронная версия без jQuery :

Обратите внимание, что для получения этого рабочего междомена сервер должен будет установить заголовок allow-origin в своем ответе.

Это должно сделать:

Существует несколько способов реализации модулей в Javascript. Вот два наиболее популярных из них:

Модули ES6

CommonJS (используется в NodeJS)

Эта система модуляции используется в NodeJS. Вы в основном добавляете свои экспорты к объекту, который называется module.exports . Затем вы можете получить доступ к этому объекту через require('modulePath') . Важно понимать, что эти модули кэшируются, поэтому, если вы require() дважды определите модуль, он вернет уже созданный модуль.

Вам просто нужно написать import cond from 'cond.js'; для загрузки макроса с именем cond из файла cond.js .

Таким образом, вам не нужно полагаться на какую-либо инфраструктуру JavaScript и не нужно явно делать Ajax вызовы.

Вот обобщенная версия того, как Facebook делает это для их вездесущей кнопки «Нравится»:

Если это работает для Facebook, это будет работать для вас.

Если вы хотите использовать чистый JavaScript, вы можете использовать document.write .

Если вы используете библиотеку jQuery, вы можете использовать метод $.getScript .

Если вы намерены загрузить файл JavaScript с использованием функций из импортированного / включенного файла , вы также можете определить глобальный объект и установить функции как элементы объекта. Например:

Global.js

File1.js

File2.js

Main.js

Вам просто нужно быть осторожным, когда вы включаете скрипты в файл HTML. Порядок должен быть таким, как показано ниже:

Существует также Head.js. Это очень легко иметь дело с:

Как видите, это проще, чем Require.js, и так же удобно, как метод $.getScript jQuery. Он также имеет некоторые расширенные функции, такие как условная загрузка, обнаружение функций и гораздо больше.

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

Примере:

Вы можете попытаться использовать $.when для проверки массива отложенных объектов, но теперь вы делаете это в каждом файле, и file2 будет считаться загруженным, как только будет выполнен $.when , а не при выполнении обратного вызова , так что file1 все еще продолжает выполнение до загрузки file3. Это действительно до сих пор та же проблема.

Я решил идти назад, а не вперед. Спасибо document.writeln . Я знаю, что это табу, но при правильном использовании это работает хорошо. Вы получите код, который можно легко отладить, правильно отобразить в DOM и убедиться, что зависимости загружены правильно.

Конечно, вы можете использовать $ ("body"). Append (), но тогда вы больше не сможете правильно отлаживать.

ПРИМЕЧАНИЕ. Вы должны использовать это только во время загрузки страницы, иначе вы получите пустой экран. Другими словами, всегда размещайте это перед / за пределами document.ready . Я не проверял использование этого после загрузки страницы в событии щелчка или чем-то подобном, но я почти уверен, что это потерпит неудачу.

Мне понравилась идея расширения jQuery, но, очевидно, вам не нужно.

Перед вызовом document.writeln он проверяет, что скрипт еще не загружался, оценивая все элементы скрипта.

Я предполагаю, что сценарий не выполняется полностью до тех пор, пока не будет выполнено его событие document.ready . (Я знаю, что использование document.ready не обязательно, но многие используют его, и обработка этого является гарантией.)

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

Вместо этого вы можете попытаться изменить jQuery readyList , но это выглядело как худшее решение.

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

Настройте файл с именем «plugins.js» (или extensions.js или все, что вы хотите). Храните ваши файлы плагинов вместе с этим одним основным файлом.

У plugins.js будет массив pluginNames[] , который мы будем повторять each() , затем добавьте тег к голове для каждого плагина

Несмотря на то, что все плагины вставляются в тег head так, как они должны, они не всегда запускаются браузером, когда вы нажимаете на страницу или обновляете.

Я обнаружил, что более надежно просто писать теги сценария в PHP include. Вы должны написать это только один раз, и это такая же работа, как вызов плагина с использованием JavaScript.

Заявление import находится в ECMAScript 6 .

Хотя эти ответы великолепны, существует простое «решение», существующее с момента загрузки скрипта, и оно охватит 99,999% случаев использования большинства людей. Просто включите сценарий, который вам нужен, прежде чем сценарий, который требует этого. Для большинства проектов не требуется много времени, чтобы определить, какие сценарии нужны и в каком порядке.

Если script2 требует script1, это действительно самый простой способ сделать что-то подобное. Я очень удивлен, что никто не поднял этот вопрос, так как это самый очевидный и самый простой ответ, который применим почти в каждом отдельном случае.

Синтаксис @import для достижения CSS-подобного импорта JavaScript возможен с помощью такого инструмента, как Mixture, через их специальный тип файла .mix (см. здесь ). Я предполагаю, что приложение просто использует один из вышеупомянутых методов, хотя я не знаю.

Из документации Mixture в файлах .mix :

Файлы микширования - это просто файлы .js или .css с .mix. в имени файла. Файл микширования просто расширяет функциональность обычного файла стиля или скрипта и позволяет импортировать и комбинировать.

Вот пример файла .mix , который объединяет несколько файлов .js в один:

Mixture выводит это как scripts-global.js , а также как уменьшенную версию ( scripts-global.min.js ).

Примечание: я никоим образом не связан с Mixture, кроме того, что использую его как интерфейсный инструмент разработки. Я столкнулся с этим вопросом, увидев в действии файл .mix JavaScript (в одном из шаблонов Mixture), и немного растерялся («Вы можете это сделать?» - подумал я про себя). Затем я понял, что это был тип файла приложения (несколько разочаровывающий, согласился). Тем не менее, полагал, что знание может быть полезным для других.

ОБНОВЛЕНИЕ : смесь теперь бесплатна (не в сети).

ОБНОВЛЕНИЕ : теперь микстура прекращена. Старые выпуски смесей по-прежнему доступны

Можно динамически генерировать тег JavaScript и добавлять его в документ HTML из другого кода JavaScript. Это загрузит целевой файл JavaScript.

Может быть, вы можете использовать эту функцию, которую я нашел на этой странице Как включить JavaScript файл в файле JavaScript? :

Вы также можете собрать свои сценарии, используя PHP:

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

Использование (async / await):

Большинство представленных здесь решений предполагают динамическую загрузку. Вместо этого я искал компилятор, который собирает все зависимые файлы в один выходной файл. То же, что и меньше / Sass работают с правилом CSS @import . Поскольку я не нашел ничего приличного в этом роде, я написал простой инструмент для решения проблемы.

В основной ветви jQuery они просто объединяют атомарные исходные файлы в один, начиная с intro.js и заканчивая outtro.js . Это меня не устраивает, так как не обеспечивает гибкости при разработке исходного кода. Проверьте, как это работает с JSIC:

ЦСИ / Форма / вход / Tel.js

Теперь мы можем запустить компилятор:

И получите объединенный файл

Я только что написал этот код JavaScript (используя прототип для манипулирование DOM):

Мой обычный метод:

Вот объяснение того, как работает код для любопытных: по сути, он создает новый тег сценария (после первого) URL-адреса. Он устанавливает его в асинхронный режим, чтобы не блокировать остальную часть кода, а вызывает обратный вызов, когда readyState (состояние загружаемого содержимого) меняется на «загружен».

Этот скрипт добавит файл JavaScript в начало любого другого тега :

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

Вам необходимо использовать jQuery.append() в элементе вашей страницы, а именно:

Однако этот метод также имеет проблему: если в импортированном файле JavaScript возникает ошибка, Firebug (а также консоль ошибок Firefox и Инструменты разработчика Chrome также сообщат) его место неправильно, что является большой проблемой, если вы используете Firebug для отслеживания ошибок JavaScript (я так и делаю). Firebug по какой-то причине просто не знает о недавно загруженном файле, поэтому, если в этом файле происходит ошибка, он сообщает, что она произошла в вашем основном HTML, и вам будет трудно выяснить истинную причину ошибки.

Но если это не проблема для вас, тогда этот метод должен работать.

На самом деле я написал плагин jQuery под названием $. Import_js () , который использует этот метод:

Поэтому все, что вам нужно сделать, чтобы импортировать JavaScript, это:

Я также сделал простой тест для этого на Пример.

Он включает файл main.js в основной HTML, а затем сценарий в main.js использует $.import_js() для импорта дополнительного файла с именем included.js , который определяет эту функцию:

И сразу после включения included.js вызывается функция hello() , и вы получаете предупреждение.

Как подключить файл .js к другому файлу .js? Я не использую язык JavaScript внутри html-страницы, использую его, как язык для написания мобильных приложений для инструмента DroidScript. И так как долгое время программировал в Python, привык разделять код на полезные модули, да и вообще удобнее работать с небольшими файлами, нежели с трехэтажными мегакодами. Есть выход?

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

4 ответа 4

Внезапно хороший вопрос. Там нет явной поддержки включений, потому что авторы подразумевают компоновку через HTML-тэг script.

Однако все это можно обойти так или иначе:

1 вариант: jQuery однострочник

2 вариант: На первый взгляд он немного сумашедший, но можно самому динамически создать тэг script как посоветовал @Hermann Zheboldov

Правда все это бесполезно если у вас нет браузера который обрабатывает HTML.

Поэтому я вижу только два варианта. Использовать препроцессор m4 или обычный C препроцессор для компоновки, либо так или иначе вставить туда код обрабатывающий HTML и использовать варианты выше(этот вариант значительно сложнее).

P.S. Возможно там уже есть какое решение пробелмы с включениями, стоит это проверить, так как я не имею никакого отношения к DroidScript и ничего о нем не знаю.

Существует ли в JavaScript что-либо подобное @import в CSS, что позволяло бы включать файл JavaScript в другой файл JavaScript?

1 ответ 1

В JavaScript нет операторов import , include или require . (на самом деле, с 2015-го года есть в модулях ES6) Однако в JavaScript существуют другие способы включить внешний JavaScript-код.

Загрузка Ajax

С помощью Ajax вы можете загрузить дополнительный сценарий и затем воспользуйтесь eval . Это самый простой способ, но он пригоден только при работе на вашем собственном домене (причина – модель безопасности JavaScript sandbox security model). Использование eval также открывает двери перед «багами» и «хаками».

Загрузка jQuery

Библиотека jQuery предоставляет возможность загрузки одной строкой:

Динамическая загрузка сценария

Добавьте тег script c URL сценария в HTML. Это идеальное решение для того чтобы избежать вычислительных затрат появляющихся при работе с jQuery. Сценарий может находиться на другом сервере.

Тег можно вставить либо в раздел веб-страницы, либо перед закрывающимся тегом .

Определение момента завершения сценария

Теперь об одной серьёзной проблеме, связанной с удалённой загрузкой кода, о которой нельзя забывать. Современные веб-браузеры загружают файл и продолжают исполнение текущего сценария, так как они загружают всё асинхронно в целях повышения быстродействия (это справедливо как для jQuery, так и для ручного метода загрузки динамического сценария.)

Это значит, что если вы воспользуетесь подобными приёмами в чистом виде, вы не сможете использовать только что загруженный код в строке, следующей за командой загрузки, потому что он всё ещё будет «подгружаться».

Например: my_lovely_script.js содержит MySuperObject :

Error : MySuperObject is undefined

Затем вы обновляете страницу, нажав F5 . И всё работает! Непонятно.

Как же быть?

Вы можете использовать небольшую хитрость (см. ссылку, которую я давал ранее). Вкратце: при загрузке сценария он использует заданное событие для запуска функции обратного вызова. Таким образом, вы можете поместить весь код, использующий удалённую библиотеку, в функцию обратного вызова. Например:

И затем код, который вы хотите использовать после загрузки сценария вы записываете в лямбда-функцию:

Запускаем то, что получилось:

Учтите, что сценарий может выполняться после или до загрузки DOM — в зависимости от браузера и от наличия в коде строки script.async = false; . Существует великолепная общая статья по загрузке в Javascript, в которой это рассматривается.

Объединение исходного кода

Ещё одно решение – объединить два файла в один. Это можно сделать с минификацией, что позволит получить на выходе единый JavaScript-файл минимального размера, который будет делать всё нам необходимое.

Is there something in JavaScript similar to @import in CSS that allows you to include a JavaScript file inside another JavaScript file?

68 Answers 68

The old versions of JavaScript had no import, include, or require, so many different approaches to this problem have been developed.

But since 2015 (ES6), JavaScript has had the ES6 modules standard to import modules in Node.js, which is also supported by most modern browsers.

For compatibility with older browsers, build tools like Webpack and Rollup and/or transpilation tools like Babel can be used.

ECMAScript (ES6) modules have been supported in Node.js since v8.5, with the --experimental-modules flag, and since at least Node.js v13.8.0 without the flag. To enable "ESM" (vs. Node.js's previous CommonJS-style module system ["CJS"]) you either use "type": "module" in package.json or give the files the extension .mjs . (Similarly, modules written with Node.js's previous CJS module can be named .cjs if your default is ESM.)

Using .mjs , you'd have module.mjs :

ECMAScript modules in browsers

Browsers have had support for loading ECMAScript modules directly (no tools like Webpack required) since Safari 10.1, Chrome 61, Firefox 60, and Edge 16. Check the current support at caniuse. There is no need to use Node.js' .mjs extension; browsers completely ignore file extensions on modules/scripts.

Dynamic imports in browsers

Dynamic imports let the script load other scripts as needed:

The older CJS module style, still widely used in Node.js, is the module.exports / require system.

There are other ways for JavaScript to include external JavaScript contents in browsers that do not require preprocessing.

You could load an additional script with an AJAX call and then use eval to run it. This is the most straightforward way, but it is limited to your domain because of the JavaScript sandbox security model. Using eval also opens the door to bugs, hacks and security issues.

Like Dynamic Imports you can load one or many scripts with a fetch call using promises to control order of execution for script dependencies using the Fetch Inject library:

The jQuery library provides loading functionality in one line:

You could add a script tag with the script URL into the HTML. To avoid the overhead of jQuery, this is an ideal solution.

The script can even reside on a different server. Furthermore, the browser evaluates the code. The tag can be injected into either the web page , or inserted just before the closing tag.

Here is an example of how this could work:

This function will add a new tag to the end of the head section of the page, where the src attribute is set to the URL which is given to the function as the first parameter.

Both of these solutions are discussed and illustrated in JavaScript Madness: Dynamic Script Loading.

Now, there is a big issue you must know about. Doing that implies that you remotely load the code. Modern web browsers will load the file and keep executing your current script because they load everything asynchronously to improve performance. (This applies to both the jQuery method and the manual dynamic script loading method.)

It means that if you use these tricks directly, you won't be able to use your newly loaded code the next line after you asked it to be loaded, because it will be still loading.

For example: my_lovely_script.js contains MySuperObject :

Then you reload the page hitting F5 . And it works! Confusing.

So what to do about it ?

Well, you can use the hack the author suggests in the link I gave you. In summary, for people in a hurry, he uses an event to run a callback function when the script is loaded. So you can put all the code using the remote library in the callback function. For example:

Then you write the code you want to use AFTER the script is loaded in a lambda function:

Then you run all that:

Note that the script may execute after the DOM has loaded, or before, depending on the browser and whether you included the line script.async = false; . There's a great article on Javascript loading in general which discusses this.

As mentioned at the top of this answer, many developers use build/transpilation tool(s) like Parcel, Webpack, or Babel in their projects, allowing them to use upcoming JavaScript syntax, provide backward compatibility for older browsers, combine files, minify, perform code splitting etc.

Я пишу код на Javascript для Espruino (встроенная платформа), и есть ограничение: на устройство можно сохранить только один файл.

Чтобы следующий код работал:

Модуль Something должен быть доступен из файла main.js . Модуль Something представляет собой отдельный файл и выглядит так:

Вопрос в том; Как я могу объединить эти два файла и по-прежнему использовать модуль Something в формате require("Something"); ?

4 ответа

Ответ можно найти на форумах Эспруино:

Почему бы вам не использовать webpack для объединения файлов модулей в один файл. Я полагаю, что ваш текущий каталог - это каталог вашего проекта

  • Во-вторых, установите веб-пакет с помощью этой команды

Чтобы собрать свой пакет, выполните эту команду:

  • Примечание: ваш bundle.js будет включать все файлы модулей, которые вам нужны в main.js

Я не могу использовать webpack, потому что это не веб-приложение. Я также пробовал просматривать безуспешно.

Да, как уже упоминалось выше, вам нужно уточнить код. Вы не можете использовать здесь webpack или grunt. Они перенесут код, который сломает ваши библиотеки require .

Вот как я добился этого в моем случае:

Я помещаю все свои файлы в папку (например, / src). Не импортируйте один файл из другого. Затем минимизируйте все файлы в папке в один файл (например, index.js).

uglifyjs src / * --compress --mangle -o ./index.js

Затем просто загрузите этот index.js в espruino. Сначала вам нужно установить эту библиотеку глобально.

npm install -g espruino

espruino -p /dev/cu.wchusbserial1420 -b 115200 --board ESP8266_4MB.json -e 'save ()' index.js

Читайте также: