Ruby on rails Erlang是否有Sinatra风格的web框架?

Ruby on rails Erlang是否有Sinatra风格的web框架?,ruby-on-rails,frameworks,erlang,sinatra,Ruby On Rails,Frameworks,Erlang,Sinatra,我用Ruby和Rails编程了很长一段时间,然后我爱上了Sinatra框架的简单性,它允许我构建一页web应用程序 Erlang是否有类似Sinatra的web框架?我试过Erlyweb,但它似乎太重了。你可能对生锈的Klophaus框架感兴趣。它非常轻量级,非常适合于真正动态的单页网站。您可以通过mochiweb实现一些最低限度的功能: start() -> mochiweb_http:start([{'ip', "127.0.0.1"}, {port, 6500},

我用Ruby和Rails编程了很长一段时间,然后我爱上了Sinatra框架的简单性,它允许我构建一页web应用程序


Erlang是否有类似Sinatra的web框架?我试过Erlyweb,但它似乎太重了。

你可能对生锈的Klophaus框架感兴趣。它非常轻量级,非常适合于真正动态的单页网站。

您可以通过mochiweb实现一些最低限度的功能:

start() ->
  mochiweb_http:start([{'ip', "127.0.0.1"}, {port, 6500},
                       {'loop', fun ?MODULE:loop/1}]).
                           % mochiweb will call loop function for each request

loop(Req) ->
  RawPath = Req:get(raw_path),
  {Path, _, _} = mochiweb_util:urlsplit_path(RawPath),   % get request path

  case Path of                                           % respond based on path
    "/"  -> respond(Req, <<"<p>Hello World!</p>">>);
    "/a" -> respond(Req, <<"<p>Page a</p>">>);
    ...
    _    -> respond(Req, <<"<p>Page not found!</p>">>)
  end.

respond(Req, Content) ->
  Req:respond({200, [{<<"Content-Type">>, <<"text/html">>}], Content}).
start()->
mochiweb_http:start([{'ip',“127.0.0.1”},{port,6500},
{'loop',fun?模块:loop/1}])。
%mochiweb将为每个请求调用循环函数
循环(请求)->
RawPath=Req:get(原始路径),
{Path,{,}=mochiweb\u util:urlspit\u Path(RawPath),%get请求路径
%的案例路径基于路径响应
“/”->响应(请求,>);
“/a”->响应(请求,>);
...
_->响应(请求,>)
结束。
响应(请求、内容)->
请求:响应({200,[{,}],Content})。
如果需要高级路由,则必须使用正则表达式而不是简单的case语句。

可能是使用misultin的示例(请参见REST支持),看起来像sinatra:


看一看。它有一个非常简单但功能强大的调度机制。您只需编写一个资源模块,将URI指向它,您的服务就会自动与HTTP兼容。

您可能想看看(披露:这是我自己的项目)。它很大程度上是受Sinatra的启发,建立在Sinatra的基础上,并提供了许多功能,Sinatra做到了

一个简单的例子:
-模块(我的应用程序)。
-导出([start/0,handle/3])。
开始()->
公理:启动(?模块)。
句柄('GET',[],\u请求)->
.
这将处理
GET/hi
并返回
Hello World


有关其功能的文档,请参阅。

Hi。是的,我看过氮,但它仍然很重,看起来更像成熟的Rails,甚至需要首先安装Yaws、INet或Mochiweb。我正在寻找的东西,允许我只提供基本的HTML(无需Ajax),并可以在几行为我提供一个应用程序和路由能力。Sinatra允许您从一个文件中提供任何URL,据我所知(如果我错了,请纠正我),但Non对此没有支持,或者至少我在web上的文档中找不到。太棒了,这正是我需要的答案。谢谢!:)像这样使用WebSocket的东西?
-module(my_app).
-export([start/0, handle/3]).

start() ->
    axiom:start(?MODULE).

handle('GET', [<<"hi">>], _Request) ->
    <<"Hello world!">>.