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 
评论
