摘要:古语云工欲善其事,必先利其器,对于工程师而言,选择一款合适而强大的开发框架对开发工作是大有裨益的。那么开发者应该从什么角度来进行衡量和挑选呢?本文总结了十点以供参考。
古语云工欲善其事,必先利其器,对于工程师而言,选择一款合适而强大的开发框架对开发工作是大有裨益的。那么我们该从什么角度来进行衡量和挑选呢?
首先对于一家创业公司而言,这更像是一个商业抉择而不仅仅是技术选择,时间人力物力等开销都必须要考虑周全。一旦公司规模上来了资金不成问题了,可选择的空间就更大了甚至可以进行迁移或重新架构。原文作者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堆栈。
分享到:
相关推荐
这个压缩包包含的源代码提供了20个精心挑选的案例,旨在帮助开发者深入理解和掌握Java Web开发的核心概念。尽管标题提到有三个案例在当前的压缩包中,但实际列出的子文件仅有三个章节(ch16、ch17、ch15),这可能意味...
"awesome-project-前后端优秀快速开发框架(自用)"是一个集成了多种技术的项目,旨在为开发者提供一个便捷的开发环境,以实现前后端协同工作的高效解决方案。下面我们将深入探讨这个项目及其包含的组件和知识点。 ...
我们精心挑选了一系列教程、项目和试题,旨在帮助你掌握这门艺术。这些资源涵盖了从基础到高级的各个方面,无论你是初学者还是有经验的开发者,都能在这里找到适合你的内容。 我们的教程系列由业界专家编写,内容...
总的来说,这份源码集合为开发者提供了一个深入研究Android开发框架的机会,通过阅读和学习,不仅可以提升对Android系统机制的理解,还能掌握各种最佳实践,提高开发技能。由于文件较多,建议开发者根据自己的需求...
CubicWeb是一个重视代码可重用性的Web开发框架,它不仅是一个Web框架,也是一个语义Web开发框架。CubicWeb通过关系查询语言(RQL)与数据库交互,支持语义Web的应用场景。 Zope2是基于Python的Web应用框架鼻祖,它...
### 基于工程项目Web类课程的工学结合开发与实践 #### 一、形势与背景 当前,高等职业教育在人才培养方面,普遍采用“2+1”工学结合模式,即在校理论学习两年加上一年的企业实习。对于软件开发类专业而言,更是...
整合了一下”暗示了这个压缩包可能包含了一些当前流行的、更新的软件开发框架,这些框架可能是经过精心挑选和整合的,旨在帮助开发者更快地适应最新的技术趋势。 描述中的重复内容似乎是一个排版错误,但我们可以...
### 前端开发框架介绍 前端开发框架作为现代网页应用开发的重要组成部分,在提升开发效率、简化复杂操作、实现响应式设计等方面发挥着至关重要的作用。本文将详细介绍几个流行的前端开发框架及其各自的特点。 ####...
### Web前端开发技术实战视频教程知识点总结 #### 一、Web前端开发概述 - **定义与重要性**:Web前端开发是指通过HTML、CSS、JavaScript等技术实现网站或应用程序的用户界面部分,确保用户能够直观地操作并获取所...
常见的开发框架如Spring(Java)、Django(Python)、Angular(JavaScript)等,它们分别在后端、Web前端和全栈开发领域有着广泛的应用。这些框架通常包含了许多预定义的类库、模板和工具,帮助开发者快速搭建项目,...
VMware vSphere Web Service SDK开发指南是一份指导开发者如何使用VMware vSphere SDK进行开发的文档。VMware vSphere是VMware公司推出的业界领先虚拟化解决方案,它通过提供高级抽象层来管理和控制计算资源,为用户...
HTML后台界面框架是一种用于构建美观、高效的Web管理系统的工具,它提供了一系列预设计的模板、组件和交互效果,...开发者可以根据项目需求和个人喜好,挑选合适的框架进行二次开发,以实现高效、美观的后台管理系统。
在这个"SSH框架挑选完全够用的jar包"中,我们关注的是在实际开发中最小化依赖,只使用必要的库,从而简化项目构建和提高效率。 Struts2是基于MVC设计模式的Web应用框架,它的主要功能包括视图管理、动作处理和结果...
为了实现这一目标,本系统采用了Django这一流行的Python Web框架进行开发,该框架以其高效、灵活和安全性而广受好评。同时,系统采用了B/S(Browser/Server)结构,确保了系统的跨平台性和易于访问性,用户只需通过
本文将深入探讨名为“MNVVisionCk”的Halcon视觉通用框架,该框架的出现极大地简化了Halcon的使用,并提供了丰富的预封装算子和停靠功能,旨在提升开发效率和用户体验。 首先,我们要理解Halcon框架的概念。框架在...
首先,企业项目模板通常包含一系列预先配置好的框架、库和工具,这些都经过精心挑选和整合,以实现高性能。例如,"next-enterprise-main"可能指的是Next.js企业级主项目模板,Next.js是一个流行的React框架,特别...