【发布时间】:2017-10-14 13:21:21
【问题描述】:
我正在为演示目的开发一个超级简单的 Sinatra 应用程序,我想知道是否有更好的方法来实现它。
ruby程序超级简单(注:下面只贴相关部分):
get '/' do
redis = Redis.new
redis = Redis.new(:host => settings.redis, :port => 6379)
redis.incr("pageviews")
@pageviews = redis.get("pageviews")
@hostname = Socket.gethostname
erb :webapp
end #get /
post '/increase' do
redis = Redis.new
redis = Redis.new(:host => settings.redis, :port => 6379)
redis.incr("pageviews")
@pageviews = redis.get("pageviews")
@hostname = Socket.gethostname
redirect '/'
end #post /increase
然后我的html就更简单了(注意:下面只贴相关部分):
<em style="color: blue; font-style: italic"> Views count (<%= @pageviews %>):</em>
<form method="post" action="/increase">
<input class='btn btn-primary' type='submit'>
</form>
当您加载主页时,计数器会增加 1。当您单击提交按钮时,计数器会增加 2(一个是因为我提交的操作,一个是因为重定向到主页)。没关系。这就是我想要的。
但是,由于 Sinatra 的工作方式,当我按下提交按钮时,基本上整个页面都会重新加载。对于这样一个简单的页面,这很好,但我担心对于更复杂的应用程序,重新加载整个网页可能是一个太繁重的操作。当然不优雅。
我想知道我是否试图过多地拉伸 Sinatra(如果我想做这些事情,我应该切换到 Angular 之类的东西),或者我是否可以在 Sinatra 中使用一些方法来“增加”而不用必须调用方法+重定向到/?
谢谢。
【问题讨论】:
标签: javascript sinatra