我已经尝试了所有存在的Python Web框架,我花了很长时间才意识到没有一个银弹框架,每个框架都有自己的优点和缺点.我开始使用Snakelets并且非常高兴能够在较低的水平上控制几乎所有东西而不用大惊小怪,但后来我发现了TurboGears并且我一直在使用它(1.x).像Catwalk和Web控制台这样的工具对我来说非常宝贵.
但是随着TurboGears 2的出现带来了WSGI的支持,在阅读了Django和WSGI阵营之间的宗教辩论之后,我真的在"以正确的方式做到"之间徘徊,例如,学习WSGI,花费宝贵的时间来编写功能已经存在于Django和其他全栈框架中,而不是使用Django或一些为我做任何事情的高级框架.我能看到的后者的缺点非常明显:
所以,我想我的问题是,这是更好的选择,还是仅仅是一个意见问题,如果它以最小的麻烦实现我想要的东西(我希望身份验证和CRUD接口,我应该使用Django)我的数据库)?我尝试过Werkzeug,Glashammer和朋友,但AuthKit和Repoze让我害怕,以及设置基本身份验证所涉及的步骤数量.我查看了Pylons,但文档似乎缺乏,并且在引用诸如身份验证或CRUD界面之类的简单功能时,各种wiki页面和文档似乎相互矛盾,对于版本等具有不同的hacks.
感谢S. Lott指出我不够清楚.我的问题是:从长远来看,下列哪一项是值得的,但在短期内并不痛苦(例如某种中间地带,任何人?) - 学习WSGI,或坚持使用"电池包含"框架?如果是后者,我会赞赏一个关于我是否应该再给Django一次尝试,坚持使用TurboGears 1.x,或冒险进入其他框架的建议.
此外,我尝试过CherryPy,但似乎找不到足够好的CRUD应用程序,我可以立即使用它.
是否有像sinatra(用于ruby)或web.py(用于python)的简单java Web框架?
成熟的Clojure Web框架目前有哪些选择?我正在寻找某种特征矩阵,告诉我流行的框架支持什么程度,包括:
我之前使用过play2和java.它感觉有点像样板文件,特别是如果你使用带有java的akka.但这不是框架的错.
昨天我读了"Scala for the greatient",我真的很喜欢这种语言.
现在我查看了两个框架Lift 2.5和Play 2.0.3.我认为电梯有更高的学习曲线,我不能只用电梯做一些事情.这不适合我.从我看到的,Lift有一个非常漂亮和干净的设计.
但对我来说,很难说主要的区别是什么.我认为这两个框架都很棒.
Views First方法不允许您在模板中进行编码,而是必须在代码段中进行编码.我非常喜欢这个,因为它看起来更有条理.它还允许您使用普通的html编辑器. (我的经验不多,这只是我的第一印象)
为了安全起见,我认为这不是框架的工作.
无国籍/有状态:很难说主要区别在哪里.我只知道如果你使用网络套接字,播放也有一个状态.
按F5后,两个框架都可以编译.我非常喜欢这个功能.
两个框架都在使用sbt
Lift附带授权,但我认为有一个play2 scala插件可以做同样的事情
Lift有一个用于mongoDB的ORM映射器.因为我想使用noSQL,这对我来说看起来更干净.(再次没有多少经验) 编辑在play2中有一个用于scala mongodb的ORM映射器https://github.com/leon/play-salat
Async - Play 2使用Akka.不知道电梯使用什么,但他们也有类似的东西.
通过CSRF支持提升船舶.Play2有一个CSRF模块,但这为你的代码增加了一个样板.
无状态身份验证似乎存在一些安全漏洞.两个框架都具有状态身份验证.(play2有状态/无状态,举起状态)
我已经厌倦了每隔一天必须学习另一个Java Web框架.
JSP,Struts,Wicket,JSF,JBoss Seam,Spring MVC仅举几例 - 所有这些无数的框架试图解决同样的问题.然而,它们都没有真正解决根本问题 - 这就是为什么仍然会出现越来越多的新问题.
大多数人在第一印象时看起来非常明亮和闪亮,因为它们简化了做简单的事情.
但是,一旦涉及到实际用例的实现,就会遇到问题.
通常,框架不提供任何帮助,但是通过强制根据框架自己的逻辑和环境实现事物来阻碍一个并限制选项.
简而言之,我在使用框架时会看到以下缺点:
在我看来,阿尔伯特·爱因斯坦的以下引用非常适合这里:
"我们无法通过使用我们在创建问题时使用的相同思维来解决问题."
回到我早期的PHP编码日,当编码仍然充满乐趣和高效时,我曾经为大多数事情编写自己的框架,只是复制粘贴并将它们从一个项目中采用到下一个项目.
这种方法得到了很好的支持,导致了快速开发,没有任何开销,并且实际上比大多数Java框架更强大的框架,但在单个文件中只有几百行代码加上一些简单的mod_rewrite规则.
这当然不能解决Web开发的所有问题,但它简单,快速,直接.
虽然完美地适应了当前项目的要求,但它也很容易扩展,并且由于零开销而具有非常高的性能.
那么为什么所有那些使用这个框架的麻烦,为什么不抛弃它们并回到根源呢?
当我们明天再次使用新框架启动下一个项目时,我应该对我的老板说些什么?
或者是否有可能真正有所作为的框架?
或者我忽略了一些隐藏的优势?
Apache Wicket(http://wicket.apache.org/)和Apache Tapestry(http://wicket.apache.org/)都是面向组件的Web框架 - 与Apache Foundation的基于行为的框架(如Stripes)相反.两者都允许您使用Java中的组件构建应用程序.它们看起来和我很相似.
这两个框架之间有什么区别?有人有经验吗?特别:
编辑:我已经阅读了两者的文档,我已经使用过两者.这些问题不能通过阅读文档来回答,而是根据使用这些问题一段时间的经验,例如如何在无状态模式下使用Wicket用于高性能站点.谢谢.
我对如何做一些我认为非常简单的事情感到有些困惑.我有一个简单的应用程序使用Flask.它看起来像这样:
from flask import Flask
app = Flask(__name__)
def _run_on_start(a_string):
print "doing something important with %s" % a_string
@app.route('/')
def root():
return 'hello world'
if __name__ == "__main__":
if len(sys.argv) < 2:
raise Exception("Must provide domain for application execution.")
else:
DOM = sys.argv[1]
_run_on_start("%s" % DOM)
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我发现我的终端输出的是打印语句,_run_on_start而不是其他常用的Flask app调试代码.如果我在app.run之前删除了调用,则输出正常.此外,我发现_run_on_start在启动时重复输出两次,但我不知道它是否是一些奇怪的输出,或者该函数实际上被调用了两次.
我假设这不是在你打电话之前添加函数调用的正确方法app.run.我查看了Flask文档并发现了可以使用的各种装饰器的提及,它允许您在某些请求之前/之后执行一个函数,但我想在运行应用服务器时执行调用.
此外,我意识到,如果我从另一个模块调用此模块,即,当__name__ != "__main__"我不接听我的电话时_run_on_start.
这里有什么正确的方法?在这两种情况下,当我从CL和另一个模块开始?
什么是最好的common-lisp Web框架?
我正在寻找适合开发商业Web应用程序并能够处理类似Stack Overflow的高流量站点的东西.它还应具有内置会话处理和其他类似功能.
我一直在查看氮计划,它应该是Erlang最成熟的Web开发框架.
Erlang作为一种语言,令人印象深刻.然而,关于氮,我不太热衷于使用Erlang的相当不常见的语法(除非你是PROLOG中的本地语言)来构建UI.
与其他主流 Web框架(如Django或Rails)相比,您对它的体验是什么?
最近,我一直在想,我想尝试一些新的想法和一种新的Web应用程序设计方法.我大多习惯使用ASP.NET(.NET 2.0),但我也玩过一些ASP.NET MVC库.虽然两者都很强大而且很有趣,但我真的更喜欢更基本的东西.
那里有类似的东西吗?我想要一个更透明的框架:我希望能够看到请求,将其传递到我想要的地方,以我想要的方式呈现HTML,并发布请求我想要的方式.我可以在ASP.NET中获得所有这些,但我必须非常努力地去挖掘它.我想用一些简单的东西作为一些新框架思想的基础.
那里有类似的东西吗?或者我是否必须完全重新发明所有基本的路由,请求和响应代码以及从中获得一个平台?
web-frameworks ×10
java ×3
python ×2
asp.net ×1
c# ×1
clojure ×1
common-lisp ×1
django ×1
erlang ×1
flask ×1
frameworks ×1
lift ×1
nitrogen ×1
scala ×1
tapestry ×1
turbogears ×1
werkzeug ×1
wicket ×1
wsgi ×1