一、具备技术能力

  • 至少熟悉一种Python web框架
  • 熟悉Python语法
  • 熟悉数据库、缓存、消息队列等技术的使用场景、使用方法
  • 日常能使用Linux或Mac系统工作
  • 有性能调优经验,能快速定位问题
  • 对HTML/CSS/JavaScript有一定了解,有使用经验
  • 有Vue基础

二、为什么选择Python作为Web开发

现在无论PC端还是移动互联网的Web开发工作,对产品做的各种尝试都需要更快地拿出模型并进行迭代,创业公司尤甚。Python语言更好地符合了时代的需求,所以它也受到了越来越多的关注,越来越多的人接受Python,并在生产环境中使用它。个人认为Python非常适合做Web开发,理由如下:

  • Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时借鉴了简单脚本和解释型语言的易用性。Python非常适合做快速的原型开发,很多场景下的性能问题可以通过使用C/C++写Python扩展等方式优化解决。
  • Python应用广泛,在大数据、算法、运维等领域都有不错的对应工具和库,可以有效降低产品流程中不同职位之间的技术壁垒,团队人员的沟通更容易,解决问题也更快。
  • Python标准库和第三方的库很强大,有非常多的知名项目都是用Python编写的。
  • 从2005年Django开源,2008年Reddit开源,到2010年Flask开源,Python用作Web开发已经有着10多年的历史,国内的豆瓣、搜狐,国外的Reddit、YouTube、Instagram、Pinterest、Bitbucket、Disqus、Dropbox等公司都选择Python作为Web开发的语言。不用担心Python可靠性与性能问题,因为它已经经受了时间和大规模用户并发访问的考验。

三、主流web框架

  • Django

    Django最初是被开发用来管理劳伦斯出版集团旗下一些以新闻内容为主的网站的,它以比利时的吉普赛爵士吉他手Django Reinhardt来命名,它和Flask是使用最广泛的Python Web框架。Django能如此知名很大程度上是因为提供了非常齐备的官方文档,它提供了一站式的解决方案,包含缓存、ORM、管理后台、验证、表单处理等,使得开发复杂的数据库驱动的网站变得很简单。但正因为它坚持自己对于Web框架的理解,系统耦合度太高,替换掉内置的功能往往需要花费一些功夫,所以学习曲线也相当陡峭。
    
  • Flask

    Flask是一个轻量级Web应用框架,它基于Werkzeug实现的WSGI和Jinja2模板引擎。Flask的作者是Armin Ronacher,本来这只是作者愚人节开的一个玩笑,但是开源之后却受到Python程序员的喜爱,目前在GitHub上的Star数量已经超过了Django。它的设计哲学和Django不同:只保留核心,通过扩展机制来增加其他功能。Flask用到的依赖都是Pocoo团队开发的。Pocoo团队其他的项目还有Pygments、Sphinx、以及lodgeit。Flask的扩展环境非常繁荣,基本上Web应用的每个环节都有对应的扩展供选择,就算没有对应的扩展也能很方便地自己实现一个。
    
    
  • Pyramid

    
    Pyramid在国内知名度并不高,主要原因是中文文档匮乏,其高级用法需要通过阅读源代码获取灵感。尽管被Django和Flask的光芒遮蔽,但是它的性能要比Flask高。Pyramid的“灵感来源于Zope、Pylons1.0和Django。在我们的传统观点里,小框架通常牺牲了大框架的特色,反之亦然。但是事实上我们不能真正把控一个应用程序最终的发展情况,而Pyramid在努力朝着胜任不同级别应用的框架的方向在走。虽然它默认使用Chameleon和Mako模板,但很容易切换成Jinja2,甚至可以让多种模板引擎共存,通过文件后缀名来识别。豆瓣赞赏和豆瓣钱包等产品就是基于此框架实现的,代码量级和Flask相同,性能比Flask要略高。
    
    
  • Bottle

    
    Bottle也是一个轻量级的Web框架。它的特点是单文件,代码只使用了Python标准库,而不需要额外依赖其他第三方库。它更符合微框架的定义,截止到今天只有4100多行的代码。
    
    
  • Tornado

    
    Tornado全称Tornado WebServer,最初是由FriendFeed开发的非阻塞式Web服务器,现在我们看到的是被Fackbook收购后开源出来的版本。它和其他主流框架有个明显的区别:它是非阻塞式服务器,而且速度相当快。得益于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,这意味着对于长轮询、WebSocket等实时Web服务来说, Tornado是一个理想的Web框架。
    
    

四、框架的选择原则

  • 选择更主流的框架。因为它们的文档更齐全,技术积累要更多,社区更繁盛,能得到更好的支持。
  • 关注框架的活跃情况。关注项目的更新频率、Issue和Pull Request(在本书中都简称PR)的响应情况。如果一个项目已经很长时间没有更新了,或者有一堆的问题需要解决但是没有得到回应,就不应该将这样的框架放在生产环境中。
  • 确认选择的框架是否足够满足需求。没有最好的框架,只有最合适的框架。你所选择的Web框架不仅需要满足当前的需求,也要充分考虑项目发展一段时间之后的情况,即前瞻性。如果在做选择时有个人喜好这样的因素,需要确认自己有能力对选择的Web框架提供支持,避免盲目选择而导致将来推倒重来的情况。
  • 注意媒体时效性。在做选择的时候可能会参考网络上的一些文章,但是需要注意其发表时间。举个例子,看了一篇2012年的博客,里面说应该选择A而不是B,并给了多个理由。而现在的情形可能已经发生了变化:B经过很久的努力已经做得更优秀或者2012年之后出现了更优秀的C。
  • 客观看待媒体的观点。媒体的观点并不一定是正确的(或者不是全部正确),如果不是官方的说明,就应该保持怀疑和谨慎的态度,取其精华去其糟粕,切勿完全拿来主义,应该真正做实践验证之后再做决定。

本文由 zyz 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论