简单有效的网络框架
我在找一个合适的跨平台网页框架(如果这个词用得对的话)。我需要一个不依赖于知道服务器地址或文件绝对路径的东西。理想情况下,它应该自带一个(开发用的)服务器,并且有广泛的支持。
我已经试过PHP、Django和web2py。Django有个管理面板,但需要输入太多信息(比如服务器地址或IP),用起来感觉不太舒服;PHP在服务器上有chown和chmod的冲突(代码无法访问上传的文件,反之亦然),而且处理网址的能力也不行;web2py在编译时崩溃,手册里也没有相关说明——更别提它还需要使用管理面板了。Python可能是个不错的选择,但Python的各种网页框架和版本实在太多,我一个个安装和测试根本来不及。
我需要的是一个简单有效的跨平台网页开发语言,能在几乎任何地方都能用。不要那些没用的管理面板,不要花哨的用户界面,不一定要数据库,也不要用户/访问/等级之类的限制,更不要什么“Web 2.0”的东西(我真的讨厌这个词)。我只想要一个强大的文件和请求解析器。
我习惯用C和其他底层语言编程,所以难度对我来说不是问题。
12 个回答
在web2py中,你不一定要使用管理界面,这个是可选的。下面是从零开始创建一个简单应用的方法:
wget http://web2py.com/examples/static/web2py_src.zip
unzip web2py_src.zip
cd web2py/applications
mkdir myapp
cp -r ../welcome/* ./
你可以选择编辑你的应用
emacs controllers/default.py
emacs models/db.py
emacs views/default/index.html
...
(你可以删除里面不需要的东西)。现在运行web2py,试试看
cd ../..
python web2py.py -i 127.0.0.1 -p 8000 -a chooseapassword &
wget http://127.0.0.1:8000/myapp/default/index.html
当你编辑controller/default.py时,你就有了一个控制器,比如说
def index():
the_input = request.vars # this is parsed from URL
return dict(a=3,b=5,c="hello")
你可以返回一个字典(这个字典会被同名的视图解析)或者一个字符串(就是实际页面的内容)。例如:
def index():
name = request.vars.name or 'anonymous'
return "hello "+name
然后调用
wget http://127.0.0.1:8000/myapp/default/index?name=Max
返回
'hello Max'
/myapp/default/index?name=Max 会调用应用程序中文件夹applications/myapp/的default.py控制器里的index函数,并把name=Max传递给request.vars.name='Max'。
这个问题的根本原因在于对你所提到的工具完全不理解,甚至对网络服务的基本概念也不清楚。
Django有管理面板?如果你不想用,那就别用。那里不需要做任何配置,它主要是用来管理你的数据的,如果你需要的话。
PHP有chown的问题?PHP是一种编程语言,不是框架。如果你想用它运行某些东西,你需要正确设置权限。无论你用什么语言,都是这样。
你想要一个不需要知道自己地址或文件位置的东西?这是什么意思呢?如果你在设置一个网络服务器,它必须知道要响应哪个地址。然后,它还需要知道在收到请求时要运行什么代码。如果不在某个地方配置地址和文件路径,什么事情都不会发生。
我觉得你需要更明确一下你想要实现的目标,以及你想开发什么样的产品。一个“无需设置”的产品可能会带来很多自动配置的麻烦,而一个需要小设置文件的框架,可能几分钟就能搞定,而且从长远来看会简单很多。还有,考虑到网络是一个开放的地方,总会有一些安全性和访问权限的问题需要注意。
另外,支持Web 2.0相关功能的框架不一定就是一个糟糕的框架。不要因为它们也有你不喜欢或不需要的功能,就把好的选择扔掉,只要它们允许你在不使用这些功能的情况下工作就行。
PHP在与服务器的chown和chmod权限上有冲突(代码无法访问上传的文件,或者反之),而且处理网址也不太好;
PHP本身不是一个框架,它是一种编程语言。我不知道你尝试过哪个基于PHP的框架或产品,但你提到的所有问题都是可以解决的,并且并不只限于PHP。如果你喜欢这个语言,也许可以再试试。相关的StackOverflow问题:
如果你需要一个可以在任何地方运行的东西(也就是尽可能多的服务器上),那么PHP自然是你的首选,因为在便宜的主机可用性方面,它胜过其他所有平台。
不过,如果我是你,我不会在这个时候限制自己的选择。我听说Django有很多好评。此外,Google App Engine是一个有趣的、可扩展的平台,可以用来做网页工作,支持多种语言。