如何为你的项目挑选适宜的Web开发框架?
英文原文:HOW TO CHOOSE THE RIGHT WEB FRAMEWORK FOR YOUR NEXT PROJECT
古语云工欲善其事,必先利其器,对于工程师而言,选择一款合适而强大的开发框架对开发工作是大有裨益的。那么我们该从什么角度来进行衡量和挑选呢?
首先对于一家创业公司而言,这更像是一个商业抉择而不仅仅是技术选择,时间人力物力等开销都必须要考虑周全。一旦公司规模上来了资金不成问题 了,可选择的空间就更大了甚至可以进行迁移或重新架构。原文作者 Ramigbtech 总结了以下 10 点以供参考。译文如下:
1. 语法
拥有优雅语法的语言无疑可以让编程工作变得惬意,但有时候我们容易被表象所蒙蔽,如果凭直觉你认定,"this is text".split (’ ‘) .reverse.join (‘ ‘)比" ".join ("This is text".split (’ ‘)[::-1]) 的写法要好或差,那么这仅仅是外貌协会,实际上我们更应该着眼于它本身是否具有局限性或语法是否累赘,用更少的代码完成等价的工作我们自己或团队都会对当 初的选择心存感激。
2. 功能和体型
我们需要为路由编写复杂的正则查询吗?路由中含有内建的 DSL 吗?我们需要使用 ORM 吗?或许我们还想拥有更多其它功能。建议选取一款较轻巧框架作为开始,日后我们可以为它添砖加瓦。
3. 文档资源
具备丰富文档资源的框架使用起来的确是得心应手事半功倍。例如我在学习 CodeIgniter 时,根本不必像无头苍蝇那样四处寻找答案,其自带的教程和配套范例都做得非常认真仔细。相对而言,我在学习 ExpressJS 的时候就比较费力了。
4. 代码自动生成
框架中的代码自动生成功能通常能为我们节省不少时间,我们仅需要做好控制器/类等的处理而把其它重复的编码工作交给框架,虽然有时候不能自由地进行自定义,但对于想快速开发出一个能运行的原型是有积极意义的。
5. 模块化
Django 在模块/Apps 的处理上令人赞叹,不仅仅让代码复用变得简便,同时有助我们培养良好的模块化思维。当我们不再需要X模块时,我们只需把它移除然后做好代码重构工作就可以了。
6. 基础架构
不论是使用 LAMP 还是 MEAN 堆栈,或是 Rails/Unicorn 等,最关键的还是我们对这个架构有没有足够的了解,有没有相关组件的维护能力。假如应用的前端和后端都与 Javascript 相关,采用 MEAN 堆栈架构是个不错的选择。
7. 社区和更新速度
框架相关的社区是否活跃?有没有技术大咖坐镇?官方会否常常上 StackOverflow 帮忙解答技术疑难?为这些问题找到完美的答案是有一定难度,但绝大多数时候数字是最真实的。日期或参与度/帖子热度都是不错的衡量指标。此外,补丁的更新 速度也十分关键,对安全性和漏洞的重视与否可谓是牵一发而动全身。
8. 重大变更
就在最近不少程序员听到 Angular 2.0 的重大变更后感到震惊和抓狂,尽管要到 2015 年晚些时候才会全部完成,但一想到辛辛苦苦做好的代码都会变成过去时,又怎能安之若素呢?另一个例子是 Yii 框架,新版本 2.0 的推出意味着对前个版本的完全重写。
9. 部署和依赖
容易部署吗?能方便进行扩展吗?需要花费多少时间来学习掌握部署工具?虽然有 Docker 这样的工具可以帮我们解答上述问题,但是抽取时间来思考这方面的问题还是有必要的。
10. 人力
我们能快捷地找到相应的开发人才吗?将要使用的框架在我们所处的区域是否流行?纵然培训工作是管理的一部分,但对于初创公司而言时间和资金时刻都得精打细算。
写在最后:
如果是中型的网站,我会选择 Django。如果我暂时不能确定网站的规模和将投入多少开发精力,我会选择 Rails。如果我不想前后端工作分得太开,我会选择 MEAN 堆栈。