• Phoenix Framework


    Phoenix 是一个web开发框架,写入Elixir中它执行的是服务器端模型-视图-控制器(MVC)模式。许多它的组件和概念看起来和我们熟悉的其他web框架相似,比如Ruby 写的Rails 或是 python的Django框架。
    Phoenix提供了一个两全齐美的方案:高效的开发生产力和高效的应用性能。Phoenix还提供了全新的特性:像channels 可以提供实时交互的功能,预编译模版提供更高的速度。

    hello_web

    • Phoenix.endPoint: endpoint包含了所有请求都要经过的公共和初始路由。如果你想要在所有的请求上都添加上某些操作,请添加到此文件
    • Phoenix.router: router负责分配动作/路径到控制器。router允许我们定义单独的功能区域;例如:我们的应用中有部分页面需要用户验证,其他的则不需要。
    • Phoenix.Controller: controller的功能是检索请求的信息,并与业务层交互,给展示层准备数据。
    • Phoenix.View:view是处理从controller获取到的结构化数据,并且将数据转化成文稿展现给用户。

    Routing

    Router路由是Phoenix应用中最主要的总线。他可以匹配HTTP请求到controller actions,连通实时频道处理,并且还给一些路由定义了一系列的管道转换域。
    路由模块名称的定义方式为应用的名字作为前缀+Web+.Router

    一条路由的书写方式:
    Http操作 路由, 控制器, :action

    使用$ mix phx.routes命令可以查看应用中定义的所有路由。

    resource定义路由

    使用resource定义路由,可以定义一个标准的路由矩阵,格式为
    resource 路由,控制器,resource还可以嵌套定义

    scope "/", HelloWeb do
      pipe_through :browser
    
      get "/", PageController, :index
      resources "/users", UserController
      ...
    end
    # 执行mix phx.routes 打印的resource的结果
    ...
    user_path  GET     /users           HelloWeb.UserController :index
    user_path  GET     /users/:id/edit  HelloWeb.UserController :edit
    user_path  GET     /users/new       HelloWeb.UserController :new
    user_path  GET     /users/:id       HelloWeb.UserController :show
    user_path  POST    /users           HelloWeb.UserController :create
    user_path  PATCH   /users/:id       HelloWeb.UserController :update
               PUT     /users/:id       HelloWeb.UserController :update
    user_path  DELETE  /users/:id       HelloWeb.UserController :delete
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    Pipelines

    Pipelines是一组可以被关联上特殊作用域的插件;
    Routes 被定义在 scopes 作用域内并且这个作用域可以穿越多个管道。一旦一个路由被匹配,Phoenix将会调用这个路由关联的所有 pipelines 插件。例如:访问 /将会通过 :browser 管线,于是会调用虽有的插件。
    Pipeline默认定义了2种类型,:browser:api,他们可以被一系列的基本的任务应用。我们可以根据自身的需求创建我们自己的 pipelines

    The :browser:api pipelines

    像browser和api的名字一样,:browserpipeline是为应用在响应浏览器端渲染请求的路由而准备的,:api pipeline是为响应产品数据 API 请求而准备的

    Forward

    Phoenix.Router.forward/4宏可以被用于,将所有的以某个特殊路径开头的请求都发送到一个特殊的插件上。

  • 相关阅读:
    只筛选nr
    k-means clustering algorithm,K均值算法
    学习笔记-微信支付
    分布式存储系统之Ceph集群MDS扩展
    微信
    常用分析模型---5W2H分析模型
    控制循环break、return、continue
    C++的文件操作
    ORACLE 基础
    推荐系统笔记(五):lightGCN算法原理与背景
  • 原文地址:https://blog.csdn.net/HobbitHero/article/details/126261029