Lucky功能齐全的 Crystal Web 框架
Lucky 是一个用 Crystal 写的 Web 框架,它可以帮助你在编译时捕获 bug,并提供快速的响应,使编写 Web 应用程序快速、有趣和容易。
Lucky 使用 Action 类来处理 HTTP 请求和响应,类将它处理的路由和参数映射到响应块。
特性:
- 速度快和使用很少的内存
- 在创建一个新的 Lucky 项目时,可以包括身份验证、资产管理、CORS、数据库 ORM等等
- 与在 QA 或生产中发现 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
评论