Node.js для Луа? - PullRequest
       7

Node.js для Луа?

32 голосов
/ 06 июня 2010

Я играл с node.js (nodejs) последние несколько дней, и это фантастика. Насколько я могу судить, в lua нет аналогичной интеграции libev и libio, что позволяет избегать практически любых блокирующих вызовов и взаимодействовать с сетью и файловой системой асинхронно.

Я медленно портирую свою реализацию Java на nodejs, но я шокирован тем, что luajit намного быстрее, чем JavaScript v8, и использует гораздо меньше памяти!

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

Будучи новичком в Луа, я просто не уверен, существует ли такая вещь. Я буду признателен за любые указатели.

Спасибо

Ответы [ 9 ]

23 голосов
/ 11 декабря 2011

Недавний соответствующий проект: Luvit "(Lua + libUV + jIT = чистый удивительный соус)".

Из объявления :

это в основном luajit2 + libuv (библиотека цикла событий позади nodejs). Он компилируется как один исполняемый файл так же, как nodejs и может запустить файлы .lua. Что отличает его от стокового luajit дистрибутив имеет несколько встроенных модулей и некоторые немного другая семантика.

Обратите внимание, что мы не работаем как CGI-скрипт для apache или чего-либо ещё как это. Скрипт lua является сервером http. Вы получаете свой обратный вызов вызывается каждый раз, когда на сервер поступает http-запрос.

15 голосов
/ 19 января 2011

Похоже, именно то, что я искал: LuaNode https://github.com/ignacio/LuaNode

10 голосов
/ 06 июня 2010
6 голосов
/ 01 ноября 2012

Вы также можете посмотреть на luv:

https://github.com/richardhundt/luv

из списка рассылки lua:

Как luv относится к Luvit - LuaJIT + libuv (Node.js: s / JavaScript / Lua /)?

Это не совсем так. Luvit сильно заимствует из архитектуры node.js (реакторные обратные вызовы и т. д.), статически связывает с luajit, обеспечивает это собственная система модулей и исполняемый файл. Luv это просто модуль Lua, который связывает с libuv. Ключевое отличие в том, что Luv больше похож на м-н механизм потоков, объединяющий сопрограммы и потоки ОС при использовании Цикл событий libuv под капотом.

Так что кроме того факта, что они оба связываются с libuv, у них нет много общего.

5 голосов
/ 08 сентября 2012

Возможно, вы захотите взглянуть на Luvit или на сайт Lua Github .Я думаю, что для реализации функциональности Node.js используется Lua .Вы пишете код Lua на стороне клиента и на стороне сервера.Вот описание подхода Luvit к выполнению функциональности Node.js в Lua .

3 голосов
/ 05 июля 2012

luvit стремится быть для Lua тем же, чем Node.js для Javascript. Определенно перспективный проект.

3 голосов
/ 27 августа 2011

если я правильно понял вопрос, взгляните на http://openresty.com/

2 голосов
/ 28 декабря 2010

Вы можете получить неблокирующий ввод-вывод в стиле node.js с помощью lua-handlers .

У него даже есть асинхронность. HTTP-клиент, который позволяет легко запускать параллельные HTTP-запросы. См. Файл test_http_client.lua как пример клиентского интерфейса HTTP.

1 голос
/ 10 марта 2016

Вы также должны проверить Lapis. Это очень легкий и быстрый фреймворк для OpenResty: http://leafo.net/lapis/

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

Как и следовало ожидать от всего, что создано для использования OpenResty, его тесты безумно хороши: https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query

Автор Lapis также написал CoffeeScript-подобный язык для Lua под названием MoonScript, что довольно неплохо: http://moonscript.org/

...