Node.js 和 Python 之间如何进行选择? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GrapeCityChina
V2EX    Node.js

Node.js 和 Python 之间如何进行选择?

  •  
  •   GrapeCityChina 2020-08-05 09:39:14 +08:00 5958 次点击
    这是一个创建于 1939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近,Node.js 和 Python 都因其广泛的特性和功能在市场上大受欢迎。在你开发 Web 应用程序的后端时,这两种技术都是你的首选。

    众所周知,每个项目都有其自己的规范和需求,因此,选择一个合适的编程语言进行开发势在必行。在本文中,我们将会详细讨论这两种技术,列出其优缺点,并得出结论,希望能为你在项目选择哪种技术时提供一些帮助。

    在开始对比这两种技术之前,让我们先来简单了解一下 Node.js 和 Python 的基础知识。

    什么是 Node.js ?

    用一种简单易懂的语言来说,Node.js 是一个服务器端平台,它是在 Google Chrome 的 Javascript 引擎(称为 V8 引擎)上开发的。Node.js 由 Ryan Dahl 于 2009 年开发,是一个开源服务器环境,主要在 Windows 、Linux 、Unix 、MacOSX 等不同平台上运行。

    使用 Node.js ,开发人员可以使用 Javascript 编写命令行工具和服务器端脚本功能。由于这样便捷、全栈的开发方式,它被认为是构建游戏平台、论坛和广告服务等应用程序的首选技术。对于所有同时具有高速和密集 I/O(输入 /输出)的连接或应用程序,以及其他一些应用程序(如生产力应用程序)的项目来说,它都是一个很好的选择。

    让我们接下来一起去看看什么是 Python,以及使用它可以开发哪些应用程序吧。

    什么是 Python ?

    Python 是一种具有动态语义的开源面向对象编程语言。它是一种高级开发语言,高层次的数据结构、动态类型和动态绑定等功能,使得它非常适合开发人员开发高级应用程序,同时,也适合作为胶水语言连接已有的软件组件。

    它是一种简单易学的语言,其语法主要集中在可读性上,从而降低程序维护成本。Python 支持模块和包,支持程序模块化和代码重用。使用这种基于技术的高级语言,开发人员可以快速构建业务应用程序、教育平台、桌面用户界面、游戏和娱乐应用程序。

    在简单的了解了两种语言后,下面我们将对这两种语言进行详细的对比?

    Node.js 与 Python:对比

    1. 灵活性和可扩展性

    在 Node.js 和 Python 之间选择一个选项时,考虑其灵活性和可扩展性非常重要。众所周知,灵活性和可扩展性被视为在不影响应用程序性能和速度的情况下执行不同数量请求的应用程序能力。

    在开发大量基于内容的应用程序和拥有各种用户的应用程序时,这两者(灵活性和可扩展性)都起着至关重要的作用。

    Node.js

    • 在 Node.js 中,开发人员在开发 Web 应用程序或任何其他类型的应用程序时都可以很容易地实现可扩展性,因为这种技术对于在单线程中开发同步架构非常流行。
    • 如前所述,Node.js 是使用 V8 引擎进行解释的,因此它的性能非常出色,从而使开发人员在开发应用程序时能够灵活自如地工作。
    • 这项技术的最好之处在于,它启用了单模块缓存,从而减少了应用程序的加载时间,并使响应速度比以前更快。
    • 包括 Python 和 Javascript 在内的这两种技术都被称为解释语言。但在 V8 这样的黑科技加持下,Python 的执行效率还是输给了 Node.js 。
    • 使 Python 落后于 Node.js 的另一点是,它不支持异步体系结构,因此它的扩展性比 Node.js 差些。

    Python

    _总结:__Python__在灵活性和可扩展性方面落后于__Node.js_

    2.程序库

    如你所知,程序库是不同功能,方法的集合,这些功能,方法和技巧使用户无需编写额外的代码只需引入即可执行不同的操作。使用库,开发人员可以在编码时节省一些时间和精力。

    Node.js

    • 与程序库不同,Node.js 通过不同的模块和包在 NPM(节点包管理器)中进行管理。NPM 本身有着比较容易上手的文档,并且非常容易使用,所以使用起来易用且好上手。
    • 谈到 Python 库和打包程序,它们是在 PIP 中管理的,PIP 代表 Python Package Index,对于软件开发人员来说学习和使用起来非常容易和流畅。Python 中的每个库都附带了一系列有用的模块,您可以为日常编程导入这些模块。

    Python

    _总结:__在引入程序库这一方面,_Node.js__和__Python__表现类似,因为它们都有自己丰富的库和模块供开发人员使用,使开发人员的精力集中在业务上,而不必在基础的功能方面耗费大量的时间成本。

    3.项目的适用性

    每个公司都有自己的项目和要求,因此必须选择有助于企业在短时间内使项目取得成功的正确技术。

    Node.js

    • 在开发游戏平台、基于高内容的应用程序、复杂的单页应用程序、实时聊天、Trello 之类的协作工具以及流应用程序方面,Node.js 是最佳选择。小型公司和初创公司可以轻松利用 Node.js 技术来构建网站和 Web 应用程序。
    • Python 适用于各种项目,例如科学数值计算、网络编程和 Web 应用程序。大部分成功的公司在使用 Python 语言。
    • 使用 Python 语言,您可以为比特币创建一个复杂的计算器,挖掘推特数据,挖掘微博数据,封装推特提要,等等。

    Python

    结论

    在这篇文章中,我们比较了 Node.js 和 Python,并讨论了这些技术最适合什么类型的项目。根据您的项目需求和业务类型,您可以选择这些技术中的任何一种,然后开始开发你自己的项目。

    如果你有什么想说的内容或是反馈,欢迎通过下面的留言框告诉我们。

    27 条回复    2020-10-26 11:37:05 +08:00
    ruanimal
        1
    ruanimal  
       2020-08-05 09:53:53 +08:00
    不知所谓,说是比较灵活性和可扩展性,扯什么 python 性能问题
    tikazyq
        2
    tikazyq  
       2020-08-05 10:13:34 +08:00
    貌似文章没写完哦
    wangyanrui
        3
    wangyanrui  
       2020-08-05 10:19:11 +08:00
    个人感觉: 所有编程语言的比较,最终都总结为:不同情况下选择不同语言~
    TaylorBu
        4
    TaylorBu  
       2020-08-05 10:59:15 +08:00
    抛开场景来谈的话,没有什么意义
    CallMeReznov
        5
    CallMeReznov  
       2020-08-05 11:07:38 +08:00   2
    libook
        6
    libook  
       2020-08-05 11:07:59 +08:00
    在 V2 上发这种入门级别的对比文可能会被喷惨,楼主保重。。。

    如果希望讲技术差异,可以遵循 STAR 法则,讲具体的例子,这样更客观一些。
    penisulaS
        7
    penisulaS  
       2020-08-05 11:12:05 +08:00
    用合适的语言实现合适的功能
    whoami9894
        8
    whoami9894  
       2020-08-05 12:14:43 +08:00   1
    > 最近,Node.js 和 Python 都因其广泛的特性和功能在市场上大受欢迎。在你开发 Web 应用程序的后端时,这两种技术都是你的首选。

    你认真的?
    laike9m
        9
    laike9m  
       2020-08-05 12:22:28 +08:00 via Android
    团队擅长哪个就用哪个
    YanSep
        10
    YanSep  
       2020-08-05 12:26:02 +08:00 via Android   1
    你在选择节点时就已经做出了选择
    ben1024
        11
    ben1024  
       2020-08-05 12:39:56 +08:00
    广告?
    wangyzj
        12
    wangyzj  
       2020-08-05 13:28:46 +08:00
    拉到最后没有链接表示意外
    PainfulJoe
        13
    PainfulJoe  
       2020-08-05 13:39:19 +08:00
    我选择 PHP
    raincode
        14
    raincode  
       2020-08-05 13:49:02 +08:00
    c++
    raincode
        15
    raincode  
       2020-08-05 13:49:30 +08:00
    C/C++好用,这两个的爹
    PinkRabbit
        16
    PinkRabbit  
       2020-08-05 13:52:48 +08:00
    怎么感觉是哪里复制粘贴的
    1018ji
        17
    1018ji  
       2020-08-05 14:05:43 +08:00
    1018j
        18
    1018ji  
       2020-08-05 14:06:18 +08:00
    @PinkRabbit 这都被你发现了
    ZehaiZhang
        19
    ZehaiZhang  
       2020-08-05 14:59:05 +08:00
    团队会什么,用什么(小公司)
    leoskey
        20
    leoskey  
       2020-08-05 16:24:15 +08:00
    根据具体的场景来选择,比如 AI 学习选 python,多 IO 选 node,大型项目使用强类型语言更好维护
    ForPy
        21
    ForPy  
       2020-08-05 18:08:30 +08:00
    async?
    tornado?
    fastAPI?
    太局面了
    zengming00
        22
    zengming00  
       2020-08-05 18:22:46 +08:00
    php 是最好的语言,当然是 php
    fxjson
        23
    fxjson  
       2020-08-05 20:29:18 +08:00
    如果是后端的话还是选择 py 吧
    jones2000
        24
    jones2000  
       2020-08-05 21:04:33 +08:00
    具体看做什么业务和你的团队擅长什么语言开发, 单纯比较语言没有意义。
    chaogg
        25
    chaogg  
       2020-08-05 21:04:47 +08:00
    翻译腔
    yinuxy
        26
    yinuxy  
       2020-08-05 21:04:48 +08:00
    不同场景适用不同的语言,谈论这个没有意义
    Selenium39
        27
    Selenium39  
       2020-10-26 11:37:05 +08:00
    最近在公司做了两个 web 项目,一个 koa,一个 tornado,很明显 koa 的相关库以及参考文档,使用人数,远远高于 tornado 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3114 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:32 PVG 19:32 LAX 03:32 JFK 06:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86