0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Try phoenix framework系列[1]

Posted at

对于 phoenix 来讲, 它是一个 web 开发框架, 它的设计实现思想和 Rails 还有 django 等都是如出一辙. 基本上就是基于 MVC 的模型来实现服务器端. 对于它来说不仅仅实现了高效的开发,而且还拥有者高性能的表现. 同时它还具有一些有趣的特性如信道, 可以用来实现实时更新的功能, 还有预编译模板等来提高速度.

对于 Phoenix 来说, 它是基本 elixir 这门语言来写的, 所以需要了解 elixir, 如果你已经掌握了 elixir 那就完美, 当然还不是很了解没有关系可以在这里学习.

接下来我们说说具体对于这个框架本身, 它是如何实现以及各个部分的组成.

先可以看看这个视频

接下来说说具体的组成. 其实对于 Phoenix 框架来说,它也是一个集大成者. 通过集合各个层面上优秀的实现来完成最终的任务, 同时这样的设计又不失灵活性和扩展性. 如包含了 Plug, Ecto, 还有 Erlang 领域的 HTTP 服务器 Cowboy 等.

组成

它有下面这些部分组成,各司其职最终形成一个 web 的开发框架. 这里就说说具体的不同组成和角色.

  • Endpoint

    • 这个端点将会接收所有的请求
    • 提供了一系列核心的过滤应用到所有的请求
    • 分发具体的请求到指定的路由
  • 路由

    • 解析请求然后分发到指定的控制器和动作上, 解析参数等.
    • 提供了一些帮助方法来解析路由生成资源路由等
    • 定义一些命名的管道,我们可以用来传递请求
    • 管道
      • 可以轻松应用过滤( plug)到一系列的路由上.
  • 控制器

    • 提供一些方法,也就是动作来对应处理请求
    • 动作
      • 准备数据然后传递给视图
      • 出发视图渲染
      • 负责调转等
  • 视图

    • 渲染模板
    • 充当展示层
    • 定义些帮助方法,用于模板, 然后一些数据的修饰用来展示
  • 模板

    • 就是模板咯
    • 预编译
  • 信道

    • 管理 sockets 了解,来轻松实现实时通信
    • 和控制器类型, 除了它可以允许双向通信来完成持久化连接
  • 发布和订阅

    • 基于信道层,允许客户端来订阅不同的主题
    • 抽象出了发布订阅适配器用来完成第三方实现的集成.

何为 Plug

[Plug](http://hexdocs.pm/plug/) 即一个定义说明关于如何定于组装模块,用来构建 web 工程. Plug 通常都是可以重用的模块或者函数, 他们提供完全不相关的行为, 像是解析请求头或者日志等, 因为 Plug 的 API 都是小而且不变的, 他们通常可以被组装使用, 好比已给管道一样. 或者可以用于多个项目等.

Plug 可以用来被处理任何事情,从验证到参数解析, 设置渲染.
Phoenix 算是把 Plug用到了极致, 特别是路由和控制器部分尤甚.
关于 Plug 最主要的一个点就是它提供了 Http 服务器的适配器, 然后可以无限的给用户提供程序的内容,当前 Plug 只是提供了 Cowboy的适配, 一个 erlang 的 web 服务器.

接下来可以从这里了解更多的内容.

Ecto

[Ecto](http://hexdocs.pm/ecto)算是一门单独的语言, 它集成了查询工具, 还有 Elixir 对于数据库操作的封装. 通过使用 Ecto, 我们可以操作不同的数据库, 操作对象数据,进行复杂的程序等

对于 Ecto, 它又下面4个具体的抽象概念

  • Repo - 也就是一个具体的数据库.
  • Model - 也就是对于数据的定义.
  • Query - 查询是绑定到具体的 model 还有 repo 上的. 能够让我们很优雅的拿数据和赛数据.
  • Changeset - 它声明了一种转换形式,在我们拿到数据和具体使用之前的转换, 包括验证, 转换等操作

默认的 Phoenix 会使用 Ecto PostgreSQL 来实现数据持久化.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?