Marinero
¡ESTAMOS BUSCANDO NUEVOS MANTENEDORES!
Características
- Compatible con Lua 5.1, Lua 5.2 y LuaJIT. (Compatibilidad 5.3 hasta ahora no probada)
- Configuración de Luarocks
- Se ejecuta en servidores web Apache2 (con mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante y Lwan.
- Usando sistemas Windows, Mac o Linux
- Compatible con MySQL, PostgreSQL, SQLite y otras bases de datos soportadas por la biblioteca luasql
- estructura MVC
- Análisis de páginas Lua
- Enrutamiento
- Mapeo básico relacional de objetos
- Validación
- Actas
- La aplicación ya viene enviada con Bootstrap
- Incluir, redirigir
- Sesiones, cookies
- Módulo de inicio de sesión
- Fácil implementación (solo Unix) -> marinero crea "nombre de aplicación" /dir/to/app
- Generación de formularios
- Lua en el cliente (posible a través de una máquina virtual Lua=>JS implementada con la aplicación)
- URL amigables
- Función de inspección para una mejor depuración => similar a un volcado de var
- Páginas 404 personalizadas
- Relaciones
- Generación de modelo (lectura de DB)
- Generación CRUD (lectura del modelo)
- Tema y diseño (ahora puede tener múltiples diseños dentro de un tema, por ejemplo, 1 columna y 2 columnas)
- Integración con Busted para pruebas unitarias y funcionales de tu aplicación
Hoja de ruta
- Integración con la API DB de mod_lua y la refactorización del módulo DB
- Mejoras en el módulo de formulario y validación.
Puede encontrar más información sobre la motivación para construir este proyecto aquí: http://etiene.net/10/sailor
Información del árbol de directorios
- /docs - se supone que este tiene documentación
- /lua-to-js-vms - diferentes máquinas virtuales Lua->Javascript para usar Lua en el navegador con Sailor
- /rockspecs - Archivos Rockspec para la instalación de LuaRocks
- /src - Módulos Lua con cosas interesantes de Sailor y otros lugares.
- /sailor - Módulos marineros
- /sailor/blank-app: aplicación web Sailor en blanco, se puede copiar y pegar como base para sus propias aplicaciones
- /test: aplicaciones para fines de prueba y demostración
Entornos compatibles
Sailor ha sido probado en Linux, Mac OS X y Windows y actualmente es compatible con Apache con mod_lua o mod_pLua, Nginx con ngx_lua, Lwan, Lighttpd con mod_magnet o cualquier servidor web compatible con CGI, como Civetweb, Mongoose y Xavante, si CGILua. está presente.
Instalación
Para Linux, consulte INSTALL_LINUX.md (Ubuntu) o INSTALL_LINUX_ARCH.md (Arch Linux)
Para Windows, consulte INSTALL_WIN.md
Para Mac, consulte INSTALL_MAC.md
Usando marinero
Una aplicación Sailor predeterminada tendrá la siguiente estructura de árbol de directorios:
- /conf - archivos de configuración, ábrelos y edítalos.
- /controllers - ¡controladores que harás!
- /themes: archivos de temas predeterminados.
- /modelos - ¡modelos que harás!
- /pub: archivos de acceso público (bibliotecas js, por ejemplo)
- /runtime: archivos temporales generados durante el tiempo de ejecución.
- /tests - pruebas unitarias y funcionales
- /views: aquí es donde irán tus páginas lua en .lp
Creando páginas
¡Vaya a /controllers y cree su primer controlador! Debería ser un módulo lua. Nómbralo como quieras, nuestro ejemplo es "site.lua". Serviremos dos páginas, una accesible a través de /?r=site que ejecutará site.index() de forma predeterminada y otra accesible a través de /?r=site/notindex.
local site = {}
local model = require " sailor.model "
function site . index ( page )
local foo = ' Hello world '
local User = model ( " user " )
local u = User : new ()
u . username = " etiene "
u . password = " a_password "
local valid , err = u : validate () -- validate() will check if your attributes follow the rules!
if not valid then
foo = " Boohoo :( "
end
-- Warning: this is a tech preview and some methods of model class do not avoid SQL injections yet.
page : render ( ' index ' ,{ foo = foo , name = u . username }) -- This will render /views/site/index.lp and pass the variables 'foo' and 'name'
end
function site . notindex ( page )
page : write ( ' <b>Hey you!</b> ' )
end
return site
Vaya a /views, cree un directorio llamado 'sitio' que coincida con el nombre de su controlador y cree su primera página, nuestro ejemplo es index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
Para obtener más información sobre lo que puede hacer con HTML y Lua Pages, visite http://keplerproject.github.io/cgilua/manual.html#templates
Para obtener más ejemplos, puede consultar el controlador de prueba (/controllers/test.lua), las vistas de prueba (/views/test/*) y el modelo de usuario (/models/user.lua)
Manual de documentación y referencia
http://sailorproject.org/?r=docs
Contribuyendo
¡Las contribuciones son bienvenidas! Simplemente haga una solicitud de extracción :) Intente seguir el estilo de código del resto del repositorio.
Si creó una extensión para Sailor y le gustaría compartirla, comuníquese con nosotros para que pueda agregarla al sitio web.
Gracias
Este repositorio contiene el siguiente código con licencia MIT de terceros:
- Plantillas LP: http://keplerproject.github.io/cgilua/manual.html#templates
- Valor - https://github.com/sailorproject/valua
- Lua en el cliente: https://github.com/felipedaragon/lua_at_client
- Luz de luna - http://moonshinejs.org/
- Lua5.1.js - https://github.com/logiceditor-com/lua5.1.js
- Lua.vm.js - https://kripken.github.io/lua.vm.js/lua.vm.js.html
- Luz de las estrellas: https://github.com/paulcuth/starlight
Sugerencias, preguntas y abrazos.
¡Abrazos! No errores. Para errores, complete un problema. :)
[email protected]
https://twitter.com/etiene_d
Lista de correo y soporte
Únase a nuestro grupo de Google para obtener lista de correo y soporte
Si tiene problemas para que Sailor funcione o si lo hizo funcionar con especificaciones diferentes, comuníquese con nosotros para que podamos intercambiar información y poder mejorar el manual. ¡Gracias!