我在Ruby和Rails中编程了很长时间,然后我爱上了Sinatra框架的简单性,这让我可以构建一个页面的Web应用程序。
Erlang是否有像Sinatra这样的Web框架?我试过Erlyweb,但它看起来太重了。
答案 0 :(得分:11)
你可以用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}).
如果您需要高级路由,则必须使用正则表达式而不是简单的case语句。
答案 1 :(得分:3)
看看webmachine。它有一个非常简单但功能强大的调度机制。您只需编写资源模块,将URI指向它,并且您的服务自动符合HTTP标准。
答案 2 :(得分:3)
您可能需要查看Axiom(披露:这是我自己的项目)。它主要受到Sinatra的启发,建立在Cowboy之上,并提供了很多功能,Sinatra。
-module(my_app).
-export([start/0, handle/3]).
start() ->
axiom:start(?MODULE).
handle('GET', [<<"hi">>], _Request) ->
<<"Hello world!">>.
这会处理GET /hi
并返回Hello World!
。
查看README以获取其功能的文档。
答案 3 :(得分:2)
您可能对Rusty Klophaus'nitrogen框架感兴趣。它非常轻巧,非常适合真正动态的单页网站。
答案 4 :(得分:2)
可能是这个例子(参见REST SUPPORT)使用misultin,看起来像sinatra: