JavaScript есть повсюду, но что, если вы хотите, чтобы он использовался в качестве языка сценариев в вашем собственном приложении или устройстве? Duktape может быть тем, что вам нужно. Это открытый исходный код и только что достиг версии 1.
Если вам нужно добавить JavaScript в проект, вы можете использовать один из больших движков, таких как SpiderMonkey или V8, но ключевое слово здесь — «большой». Duktape является языком, совместимым с ECMAScript 5, и он также имеет некоторые функции от E6, упакованные в небольшую программу C, которая может быть связана с проектами C или C ++.
Конечно, «маленький» — понятие относительное, и 200 КБ кода все еще могут быть слишком много для некоторого оборудования. Также требуется 46 КБ оперативной памяти, но ее можно уменьшить до 22 КБ. С точки зрения Интернета вещей он может работать с системами, имеющими 256 КБ флэш-памяти и 96 КБ ОЗУ. Чтобы представить это в перспективе, это означает, что он может работать на Arduino Due, но не на Uno.
Другие преимущества:
Встроенный механизм регулярных выражений
Встроенная поддержка Unicode
Минимальные зависимости от платформы
Комбинированный подсчет ссылок и сборка мусора по меткам и очистке с финализацией
Пользовательские функции, такие как сопрограммы, встроенная среда ведения журналов и встроенная среда загрузки модулей на основе CommonJS
Виртуализация собственности с использованием подмножества объекта прокси ECMAScript E6
Либеральная лицензия (MIT)
Он также имеет глобальный объект Duktape, который предоставляет настраиваемые встроенные функции, такие как print () и alert ().
Начать работу также очень легко. Чтобы добавить его в проект, вы просто включаете его, запускаете команду инициализации и затем передаете ей код JavaScript, который вы хотите запустить:
duk_eval_string (ctx, «print (‘Привет, мир!’);»);
где ctx — указатель на движок Duktape. Таким образом, вы можете просто предоставить пользователю буфер для ввода кода и позволить ему запустить его.
В большинстве случаев вы захотите добавить пользовательские функции в среду JavaScript, и для этого вы добавляете функции C, которые можно вызывать из JavaScript. Это просто и требует только использования некоторых вызовов API Duktape для передачи параметров и результатов и для регистрации функции C в движке. После регистрации функция C может вызываться так же, как встроенная функция JavaScript.
Помимо возможности использовать Duktape в качестве встраиваемого движка JavaScript, DukLuv — это отдельный проект, который добавил libuv в движок Duktape для создания чего-то, что работает как Node.js, но занимает мало места — Node.js для встраиваемых устройств, если тебе нравится.