Как мне вызвать скрипт Lua из скрипта / файла / страницы HTML5 - PullRequest
6 голосов
/ 07 июня 2011

Очень простой вопрос (я думаю), но я новичок в этом мире веб / сценариев.

Я хочу создавать веб-страницы с динамическим контентом ...

Если у меня есть HTML-страница (HTML5) и я хочу вызвать из нее скрипт lua, как мне:

а) вызвать это? <script type=text/application>? <script type=text/lua>? так далее? Это должно быть так просто, что я не смог найти ответ.

б) восстановить данные из него? Или я могу? Могу ли я сделать что-то вроде: int xx = 0; <script type=text/lua> хх = 123; </script> и есть надежда, что xx будет 123 при выходе из скрипта?

c) заменить текущую веб-страницу содержимым, сгенерированным скриптом lua.

Извините за такие коррективные вопросы, но вся помощь очень ценится.

: пн:

Ответы [ 6 ]

13 голосов
/ 10 сентября 2012

На стороне клиента вы можете использовать:

Фенгари и Самогон выполняют скомпилированный байт-код Lua. Они более совместимы, чем lua.js, и занимают меньше места, чем, например, код. скомпилированный в Emscripten интерпретатор Lua. Они могут быть самым медленным методом из-за того, что они не используют WASM / asm.js, как это делает стандартный интерпретатор Lua, скомпилированный с Emscripten, и не генерируют JavaScript, который впоследствии может быть обработан JIT.

Я бы попробовал сначала использовать Фенгари , так как он кажется наиболее активным. У него более простое взаимодействие с JS, чем у WASM.

8 голосов
/ 07 июня 2011

На WWW скрипты могут запускаться в двух местах.

  1. В веб-браузере
  2. На веб-сервере

Если вы хотите, чтобызапустить в браузере, тогда вам нужна поддержка языка, встроенного в браузер (или предоставляемого расширением).Для всех практических целей, если вы пишете веб-страницы для WWW, то единственным языком, который вы можете использовать в HTML <script>, является JavaScript.

Если вы хотите запустить его на веб-сервере, вам нужночтобы ваш HTTPD запускал скрипт в ответ на запрашиваемый у него URL.Самый простой способ добиться этого - через CGI.

С CGI HTTPD запустит программу (как отдельный процесс) в ответ на сделанный запрос.Он будет передавать различную информацию о запросе через STDIN и переменные среды (как описано в спецификации CGI ).Затем сценарий печатает HTTP-ответ (заголовок (по крайней мере, Content-Type) и тело (например, документ HTML)) и отправляет его в STDOUT, где HTTPD берет его и отправляет обратно в браузер.

Как вы настраиваете свой сервер для запуска программ с использованием CGI, зависит от сервера. В Apache есть руководство для своего сервера.

Вероятно, есть библиотеки CGI для Lua, но я не знаю языка, поэтому не могу дать никаких рекомендаций.

CGI isмедленный и неэффективный протокол (поскольку он требует, чтобы новые процессы создавались для каждого запроса).Существуют альтернативы, такие как FastCGI и различные языковые опции.Опять же, я не знаю, что считается оптимальным на земле Луа.

0 голосов
/ 23 сентября 2016

Обычно это не так просто ...

JavaScript используется для создания сценариев в Интернете.

К счастью, есть решение

Но есть библиотека JavaScript "Starlight", которая реализует Lua, и вот как вы это делаете:

<!DOCTYPE html>
<html>
<body>
<!WARNING! These will only work if you load the starlight library later>
  <script type="application/lua">
    print('Hello world')
  </script>
<!Here we load the library for Lua>
<script src="//cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
<script src="http://paulcuth.me.uk/starlight/browser-lib/starlight.js" data-run-script-tags></script>
</body>
</html>
0 голосов
/ 19 июня 2011

Если вы хотите запустить Lua в браузере, рассмотрите возможность использования Lua Alchemy - интерпретатора Lua для Flash VM.

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

Если вы хотите запустить Lua на сервере, обратитесь к этому ответу: Какой веб-сервер использовать для веб-разработки Lua

0 голосов
/ 07 июня 2011

Большинство CGI и Lua, с которыми я играл, включают генерацию веб-страницы и вставку динамических битов, а не вызов скрипта с веб-страницы. Так что больше похоже на вариант C из вашего первоначального вопроса. Любые элементы HTML 4 или 5, которые вы хотите иметь, могут быть легко добавлены на созданную веб-страницу.

Вот несколько мест, где вы можете ознакомиться с более подробной информацией:

CGILua содержит полезную информацию о том, как использовать CGI и Lua вместе.

На этой длинной странице форума есть несколько хороших примеров с кодом и выводом.

Книга Beginning Lua Programming содержит целую главу, в которой рассказывается, как настроить и использовать CGI и Lua. (Глава 15 - Программирование для Интернета)

(Хотя некоторые из этих мест немного устарели, они все еще хорошо показывают, как делать подобные вещи.)

Помните: если вы используете cgi или fastcgi на стороне сервера, вам понадобится первая строка вашего файла Lua, чтобы иметь указатель на то место, где находится интерпретатор Lua, например:

#!/usr/local/bin/lua
0 голосов
/ 07 июня 2011

Если вы хотите запустить скрипт из браузера, рассмотрите возможность использования вместо него javascript.

Он очень похож на Lua и, в отличие от Lua, интерпретируется большинством браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...