Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 什么是长生不老药插头?_Elixir_Phoenix Framework - Fatal编程技术网

Elixir 什么是长生不老药插头?

Elixir 什么是长生不老药插头?,elixir,phoenix-framework,Elixir,Phoenix Framework,作为Elixir和web领域的新手(没有web框架经验),我想知道什么是Plug?据我所知,Cowboy是一个web服务器(虽然是Erlang,而不是Elixir),Phoenix是一个构建web应用程序的框架,但插件从何而来?它是介于两者之间的抽象层,还是与Phoenix位于同一抽象层中的插件系统 它是两者之间的抽象层吗 是的,没错!Plug是用于不同web服务器的通用适配器。目前,我们只支持牛仔,但也有工作支持其他人 插头还定义了不同组件应如何连接在一起。与Ruby中的Rack、Python

作为Elixir和web领域的新手(没有web框架经验),我想知道什么是Plug?据我所知,Cowboy是一个web服务器(虽然是Erlang,而不是Elixir),Phoenix是一个构建web应用程序的框架,但插件从何而来?它是介于两者之间的抽象层,还是与Phoenix位于同一抽象层中的插件系统

它是两者之间的抽象层吗

是的,没错!Plug是用于不同web服务器的通用适配器。目前,我们只支持牛仔,但也有工作支持其他人


插头还定义了不同组件应如何连接在一起。与Ruby中的Rack、Python中的WSGI、Clojure中的Ring等类似。

将插头视为指令管道。插件的目的是接收一个conn,修改它,然后返回修改后的conn。您可以使用插件处理很多事情,从将头附加到请求,到在呈现某些内容之前验证用户是否经过身份验证。在我当前的项目中,我使用Plug来处理请求的构造以及身份验证。

我实际上已经对Plug和Cowboy以及它们在引擎盖下的工作方式进行了一个小的深入研究,您可以阅读,但基本总结如下:

Cowboy是实际的web服务器,它解析和处理任何以Erlang编写的传入和传出请求。Cowboy与Ranch协同工作,Ranch负责处理传入的套接字连接并管理TCP协议

Plug只不过是帮助您构建web端点的规范。它为您提供了处理HTTP请求、设置状态代码、发送响应等工具


有一种方法可以帮助我对整个系统进行推理,那就是将插头和牛仔视为菲尼克斯的底层管道。

好的。据我所知,WSGI是一种接口规范。插头是相同的还是介于凤凰城和牛仔城之间的实际软件组件?插头是如何相互作用的,它们是堆叠的吗?插头两者都是。它是介于两者之间的组件,它还定义了一个规范。插头不是堆叠的,它的工作原理更像是一条管道,其中一个插头将连接线交给下一个插头。