Seemann
Wir suchen neue Betreuer!
Merkmale
- Kompatibel mit Lua 5.1, Lua 5.2 und LuaJIT. (5.3-Kompatibilität bisher ungetestet)
- Luarocks-Aufbau
- Läuft auf den Webservern Apache2 (mit mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante und Lwan
- Verwendung von Windows-, Mac- oder Linux-Systemen
- Kompatibel mit MySQL, PostgreSQL, SQLite und anderen Datenbanken, die von der LuaSQL-Bibliothek unterstützt werden
- MVC-Struktur
- Parsen von Lua-Seiten
- Routenführung
- Grundlegende objektrelationale Zuordnung
- Validierung
- Transaktionen
- Die App wird bereits mit Bootstrap ausgeliefert
- Einbinden, umleiten
- Sitzungen, Cookies
- Login-Modul
- Einfache Bereitstellung (nur Unix) -> Sailor erstellt „App-Namen“ /dir/to/app
- Formulargenerierung
- Lua auf dem Client (möglich über eine Lua=>JS-virtuelle Maschine, die mit der App bereitgestellt wird)
- Freundliche URLs
- Überprüfen Sie die Funktion für ein besseres Debugging => ähnlich einem Var-Dump
- Benutzerdefinierte 404-Seiten
- Beziehungen
- Modellgenerierung (Lesen aus DB)
- CRUD-Generierung (Lesen aus dem Modell)
- Thema und Layout (jetzt können Sie mehrere Layouts innerhalb eines Themas haben, z. B. 1-spaltig und 2-spaltig)
- Integration mit Busted für Unit- und Funktionstests für Ihre App
Roadmap
- Integration mit der DB-API und dem DB-Modul-Refactor von mod_lua
- Verbesserungen am Formular- und Validierungsmodul
Mehr über die Motivation, dieses Projekt aufzubauen, finden Sie hier: http://etiene.net/10/sailor
Informationen zum Verzeichnisbaum
- /docs – dieses soll Dokumentation enthalten
- /lua-to-js-vms – verschiedene virtuelle Lua->Javascript-Maschinen zur Verwendung von Lua im Browser mit Sailor
- /rockspecs – Rockspec-Dateien für die LuaRocks-Installation
- /src – Lua-Module mit netten Sachen von Sailor und anderen Orten.
- /sailor – Sailor-Module
- /sailor/blank-app – leere Sailor-Web-App, kann als Basis für Ihre eigenen Apps kopiert und eingefügt werden
- /test – Apps für Test- und Demonstrationszwecke
Unterstützte Umgebungen
Sailor wurde unter Linux, Mac OS vorhanden ist.
Installation
Für Linux siehe INSTALL_LINUX.md (Ubuntu) oder INSTALL_LINUX_ARCH.md (Arch Linux)
Für Windows siehe INSTALL_WIN.md
Für Mac siehe INSTALL_MAC.md
Mit Sailor
Eine Standard-Sailor-App verfügt über die folgende Verzeichnisbaumstruktur:
- /conf – Konfigurationsdateien, öffnen und bearbeiten Sie sie.
- /controllers – Controller, die du erstellen wirst!
- /themes – Standard-Themendateien.
- /models – Modelle, die Sie erstellen werden!
- /pub – öffentlich zugängliche Dateien (z. B. JS-Bibliotheken)
- /runtime – temporäre Dateien, die während der Laufzeit generiert werden.
- /tests – Unit- und Funktionstests
- /views – hierhin werden Ihre Lua-Seiten in .lp verschoben
Seiten erstellen
Gehen Sie zu /controllers und erstellen Sie Ihren ersten Controller! Es sollte ein Lua-Modul sein. Benennen Sie es nach Belieben, unser Beispiel ist „site.lua“. Wir werden zwei Seiten bereitstellen, eine über /?r=site zugänglich, die standardmäßig site.index() ausführt, und eine andere über /?r=site/notindex zugänglich.
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
Gehen Sie zu /views, erstellen Sie ein Verzeichnis mit dem Namen „site“, das Ihrem Controllernamen entspricht, und erstellen Sie Ihre erste Seite. Unser Beispiel ist index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
Weitere Informationen darüber, was Sie mit HTML- und Lua-Seiten tun können, finden Sie unter http://keplerproject.github.io/cgilua/manual.html#templates
Weitere Beispiele finden Sie im Test-Controller (/controllers/test.lua), in den Testansichten (/views/test/*) und im Benutzermodell (/models/user.lua).
Dokumentation und Referenzhandbuch
http://sailorproject.org/?r=docs
Mitwirken
Beiträge sind willkommen! Stellen Sie einfach eine Pull-Anfrage :) Bitte versuchen Sie, dem Codestil des restlichen Repositorys zu folgen.
Wenn Sie eine Erweiterung für Sailor erstellt haben und diese teilen möchten, nehmen Sie bitte Kontakt mit uns auf, damit ich sie zur Website hinzufügen kann.
Danke
Dieses Repository enthält den folgenden MIT-lizenzierten Code eines Drittanbieters:
- LP-Vorlagen – http://keplerproject.github.io/cgilua/manual.html#templates
- Valua – https://github.com/sailorproject/valua
- Lua beim Kunden – https://github.com/felipedaragon/lua_at_client
- Mondschein – 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
- Sternenlicht – https://github.com/paulcuth/starlight
Vorschläge, Fragen und Umarmungen
Umarmungen! Keine Käfer. Füllen Sie bei Fehlern ein Problem aus! :) :)
[email protected]
https://twitter.com/etiene_d
Mailliste und Support
Treten Sie unserer Google-Gruppe für E-Mail-Liste und Support bei
Wenn Sie Schwierigkeiten haben, Sailor zum Laufen zu bringen, oder wenn Sie es mit anderen Spezifikationen zum Laufen gebracht haben, nehmen Sie bitte Kontakt auf, damit wir Informationen austauschen können und ich das Handbuch verbessern kann. Danke!