กะลาสี
เรากำลังมองหาผู้ดูแลคนใหม่!
คุณสมบัติ
- เข้ากันได้กับ Lua 5.1, Lua 5.2 และ LuaJIT (ความเข้ากันได้ 5.3 ยังไม่ได้รับการทดสอบ)
- การตั้งค่า Luarocks
- ทำงานบน Apache2 (พร้อม mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante และ Lwan เว็บเซิร์ฟเวอร์
- ใช้ระบบ Windows, Mac หรือ Linux
- เข้ากันได้กับ MySQL, PostgreSQL, SQLite และฐานข้อมูลอื่น ๆ ที่สนับสนุนโดยไลบรารี luasql
- โครงสร้างเอ็มวีซี
- การแยกวิเคราะห์หน้า Lua
- การกำหนดเส้นทาง
- การทำแผนที่เชิงวัตถุสัมพันธ์ขั้นพื้นฐาน
- การตรวจสอบ
- การทำธุรกรรม
- แอพมาพร้อมกับ Bootstrap แล้ว
- รวมการเปลี่ยนเส้นทาง
- เซสชัน คุกกี้
- โมดูลเข้าสู่ระบบ
- ปรับใช้ง่าย (ยูนิกซ์เท่านั้น) -> กะลาสีสร้าง "ชื่อแอป" /dir/to/app
- การสร้างแบบฟอร์ม
- Lua ที่ไคลเอนต์ (เป็นไปได้ผ่านเครื่องเสมือน Lua=>JS ที่ปรับใช้กับแอป)
- URL ที่เป็นมิตร
- ตรวจสอบฟังก์ชันเพื่อการดีบักที่ดีขึ้น => คล้ายกับ var dump
- กำหนดเอง 404 หน้า
- ความสัมพันธ์
- การสร้างโมเดล (อ่านจาก DB)
- การสร้าง CRUD (อ่านจากแบบจำลอง)
- ธีมและเลย์เอาต์ (ตอนนี้คุณสามารถมีหลายเลย์เอาต์ภายในธีมเดียวได้ เช่น 1 คอลัมน์และ 2 คอลัมน์)
- การบูรณาการกับ Busted สำหรับหน่วยและการทดสอบฟังก์ชันสำหรับแอปของคุณ
แผนการทำงาน
- บูรณาการกับ DB API ของ mod_lua และการปรับโครงสร้างโมดูล DB
- การปรับปรุงแบบฟอร์มและโมดูลการตรวจสอบ
ข้อมูลเพิ่มเติมเกี่ยวกับแรงจูงใจในการสร้างโครงการนี้สามารถพบได้ที่นี่: http://etiene.net/10/sailor
ข้อมูลแผนผังไดเร็กทอรี
- /docs - อันนี้ควรมีเอกสารประกอบ
- /lua-to-js-vms - เครื่องเสมือน Lua->Javascript ที่แตกต่างกันสำหรับการใช้ Lua ในเบราว์เซอร์กับ Sailor
- /rockspecs - ไฟล์ Rockspec สำหรับการติดตั้ง LuaRocks
- /src - โมดูล Lua ที่มีของดี ๆ จาก Sailor และที่อื่น ๆ
- /sailor - โมดูลกะลาสี
- /sailor/blank-app - เว็บแอป Sailor เปล่า สามารถคัดลอกและวางเป็นฐานสำหรับแอปของคุณเองได้
- /test - แอปสำหรับการทดสอบและการสาธิต
สภาพแวดล้อมที่รองรับ
Sailor ได้รับการทดสอบภายใต้ Linux, Mac OS X และ Windows และปัจจุบันเข้ากันได้กับ Apache ด้วย mod_lua หรือ mod_pLua, Nginx พร้อม ngx_lua, Lwan, Lighttpd พร้อม mod_magnet หรือเว็บเซิร์ฟเวอร์ที่เปิดใช้งาน CGI เช่น Civetweb, Mongoose และ Xavante หาก CGILua มีอยู่
การติดตั้ง
สำหรับ Linux โปรดดู INSTALL_LINUX.md (Ubuntu) หรือ INSTALL_LINUX_ARCH.md (Arch Linux)
สำหรับ Windows ดูที่ INSTALL_WIN.md
สำหรับ Mac โปรดดู INSTALL_MAC.md
การใช้เซเลอร์
แอพ Sailor เริ่มต้นจะมีโครงสร้างไดเร็กทอรีดังต่อไปนี้:
- /conf - ไฟล์กำหนดค่า เปิดและแก้ไข
- /controllers - คอนโทรลเลอร์ที่คุณจะสร้าง!
- /themes - ไฟล์ธีมเริ่มต้น
- /models - โมเดลที่คุณจะสร้าง!
- /pub - ไฟล์ที่สาธารณะเข้าถึงได้ (เช่น ไลบรารี js)
- /runtime - ไฟล์ชั่วคราวที่สร้างขึ้นระหว่างรันไทม์
- /tests - การทดสอบหน่วยและการทำงาน
- /views - นี่คือที่ที่หน้า lua ของคุณใน .lp จะไป
การสร้างเพจ
ไปที่ /controllers และสร้างคอนโทรลเลอร์ตัวแรกของคุณ! มันควรจะเป็นโมดูล lua ตั้งชื่อตามที่คุณต้องการ ตัวอย่างของเราคือ "site.lua" เราจะให้บริการสองเพจ เพจหนึ่งเข้าถึงได้ทาง /?r=site ซึ่งจะเรียกใช้ site.index() ตามค่าเริ่มต้น และอีกเพจหนึ่งเข้าถึงได้ผ่าน /?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
ไปที่ /views สร้าง dir ชื่อ 'site' เพื่อจับคู่ชื่อคอนโทรลเลอร์ของคุณและสร้างหน้าแรกของคุณ ตัวอย่างของเราคือ index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถทำได้ด้วย html และ Lua Pages โปรดไปที่ http://keplerproject.github.io/cgilua/manual.html#templates
สำหรับตัวอย่างเพิ่มเติม คุณสามารถตรวจสอบตัวควบคุมการทดสอบ (/controllers/test.lua) มุมมองการทดสอบ (/views/test/*) และโมเดลผู้ใช้ (/models/user.lua)
เอกสารและคู่มืออ้างอิง
http://sailorproject.org/?r=docs
มีส่วนร่วม
ยินดีบริจาค! เพียงแค่ทำการขอดึง :) โปรดลองทำตามรูปแบบโค้ดของส่วนที่เหลือของที่เก็บ
หากคุณสร้างส่วนขยายสำหรับ Sailor และต้องการแบ่งปัน โปรดติดต่อ เพื่อให้ฉันเพิ่มลงในเว็บไซต์ได้
ขอบคุณ
พื้นที่เก็บข้อมูลนี้มีรหัสลิขสิทธิ์ MIT บุคคลที่สามต่อไปนี้:
- เทมเพลต LP - http://keplerproject.github.io/cgilua/manual.html#templates
- ค่า - https://github.com/sailorproject/valua
- Lua ที่ลูกค้า - https://github.com/felipedaragon/lua_at_client
- แสงจันทร์ - 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
- แสงดาว - https://github.com/paulcuth/starlight
คำแนะนำ คำถาม และการกอด
กอด! ไม่ใช่แมลง สำหรับข้อบกพร่อง โปรดกรอกปัญหา! -
[email protected]
https://twitter.com/etien_d
รายชื่ออีเมลและการสนับสนุน
เข้าร่วมกลุ่ม Google ของเราเพื่อรับรายชื่ออีเมลและการสนับสนุน
หากคุณประสบปัญหาในการทำให้ Sailor ทำงานหรือทำงานโดยใช้สเปคที่แตกต่างกัน โปรดติดต่อเพื่อให้เราสามารถแลกเปลี่ยนข้อมูลและเราจะปรับปรุงคู่มือได้ ขอบคุณ!