如何快速构建Web应用程序?
要构建一个网络应用程序,目前有哪些开源的网络应用框架或技术呢?这些框架或技术应该满足以下几点:
- 学习起来比较快。
- 使用起来简单方便。
- 有一些小工具可以帮助快速开发(从图形用户界面的角度来看)。
- 能够和数据库连接。
我希望这个网络应用能和一个Java客户端进行通信。
我在服务器端不一定要用Java,可以尝试任何好的快速应用框架。
总的来说,我在服务器端的工作不多,所以对相关的工具和技术不太熟悉。
你有什么建议吗?
任何意见都非常欢迎!...
8 个回答
你已经给你的问题加上了“java”、“php”、“python”和“ruby-on-rails”的标签,所以多了解这些工具可能会对你解决问题有帮助。
不过,我觉得快速构建一个应用程序几乎从来不是正确的目标。通常,你想要做的是构建一个可以快速维护的应用程序,也就是说,能够在时间上以最低的整体开发成本进行维护。
Django 有几个很不错的“快速”特点,比如自动生成的管理界面、内置的ORM(这能减少开发时间,因为你不需要写SQL和其他一些代码),还有一个拥有多个可重用应用程序的大社区。
不过,Django(或者Ruby on Rails,或者其他任何MVC框架)在你刚开始学习的时候,学习曲线会比较陡峭。Django(和RoR)有很多“关注点分离”的设计,如果你不习惯这种环境,学习框架会花费一些时间。如果你使用ORM,这也是需要适应的,当然,任何框架都有API需要学习。
而PHP在代码放置和网页构成方面相对直观。它基本上允许你随意放置代码,所以一开始可能会更快。但最终虽然速度快,最终产品可能会比较杂乱,可能还需要后期重构。
这就涉及到框架的用途问题。如果是为了一个爱好网站,选择简单的(PHP)就好;否则,你可能想考虑一个支持良好的MVC框架。
正如其他人提到的,jquery可能是现成的GUI组件的最佳选择。
编辑 -- 显然现在Django(从1.1开始)有一套非常棒的单元测试工具,这些工具是捆绑在一起的。比如专门为Django设计的扩展TestCase、一个测试客户端(你可以在没有实际客户端或服务器的情况下进行页面请求测试)、一个工具可以告诉你项目的测试覆盖率百分比,还有其他一些很酷的东西。
这个问题没有一个“正确”的答案。作为一个有十多年经验的Java程序员,当被问到这个问题时,我通常的回答是……PHP。原因有很多:
- 资源使用少(比如Apache和nginx);
- 主机费用便宜;
- 入门门槛非常低;
- 它更专注于网页开发,而不是像Java那样的通用语言;
- PHP脚本在请求之间不会保持状态(不像Java的servlet),这让它们更宽容,不容易出现内存泄漏等问题;
- 没有部署步骤(像Python、Perl等)。我认为这是动态脚本语言最好的地方。只需保存文件,然后在浏览器中点击刷新;
- 虽然PHP的语法和其他方面可能不太一致,但它已经成熟,并且被一些大型网站使用(例如Facebook、Yahoo、Flickr、Wikipedia);
- PHP绝对是最受欢迎的网页开发语言。
- 小部件可以通过各种JavaScript框架来实现,比如YUI、ExtJS、SmartClient、jQuery UI等;
- PHP与MySQL配合得很好。
不过,很多这些优点也适用于其他语言(比如Python/Django)。
我认为你不一定需要一个框架来使用PHP,但如果需要的话,可以考虑以下几个:
- Kohana:它是更现代的版本,类似于更流行的CodeIgniter;
- Zend Framework:它是模块化的,你可以根据需要使用它的部分或全部;
- Smarty:这是一个强大的模板系统。