Lucky功能齊全的 Crystal Web 框架
Lucky 是一個用 Crystal 寫的 Web 框架,它可以幫助你在編譯時捕獲 bug,并提供快速的響應,使編寫 Web 應用程序快速、有趣和容易。
Lucky 使用 Action 類來處理 HTTP 請求和響應,類將它處理的路由和參數(shù)映射到響應塊。
特性:
- 速度快和使用很少的內(nèi)存
- 在創(chuàng)建一個新的 Lucky 項目時,可以包括身份驗證、資產(chǎn)管理、CORS、數(shù)據(jù)庫 ORM等等
- 與在 QA 或生產(chǎn)中發(fā)現(xiàn) bug 不同,Lucky 的設計目的是在編譯時捕獲盡可能多的 bug
JSON API
class Api::Users::Show < ApiAction
get "/api/users/:user_id" do
json user_json
end
private def user_json
user = UserQuery.find(user_id)
{name: user.name, email: user.email}
end
end
Database
# Set up the model
class User < BaseModel
table :users do
column last_active_at : Time
column last_name : String
end
end
# Add some methods to help query the database
class UserQuery < User::BaseQuery
def recently_active
last_active_at.gt(1.week.ago)
end
def sorted_by_last_name
last_name.lower.desc_order
end
end
# Query the database
UserQuery.new.recently_active.sorted_by_last_name
Rendering HTML:
class Users::Index < BrowserAction
route do
users = UserQuery.new.sorted_by_last_name
render IndexPage, users: users
end
end
class Users::IndexPage < MainLayout
needs users : UserQuery
def content
render_new_user_button
render_user_list
end
private def render_new_user_button
link "New User", to: Users::New
end
private def render_user_list
ul class: "user-list" do
@users.each do |user|
li do
link user.name, to: Users::Show.with(user.id)
text " - "
text user.nickname || "No Nickname"
end
end
end
end
end
評論
圖片
表情
