Node.js 与 Python 作为后端服务的编程语言各有什么优劣?
前端,但是想学习一门后端的语言,本来是想学习Node js,毕竟如果把Node作为后端语言对我前端的js的熟悉程度也是有帮助的,但是发现Node学习曲线有点陡,而且也没什么好的学习资料,而且国内Node也不是很流行,发现Python是门不错的后端语言,学习资料也多,现在我在纠结两者之间,求大神指教下?
1 条评论
默认排序
按时间排序
25 个回答
@SUN Ruoyu 针对说Node不擅长CRUD这一点稍微说两句 CRUD应用和平台本身没多大关系,更多是看上层的开源库。express + (mongo + mongoose) || (node-mysql + sequelize) 开发CRUD也快得很,更关键的是Node本身异步的数据库I/O性能上比Python真的高很多。 …
显示全部
@SUN Ruoyu 针对说Node不擅长CRUD这一点稍微说两句
CRUD应用和平台本身没多大关系,更多是看上层的开源库。express + (mongo + mongoose) || (node-mysql + sequelize) 开发CRUD也快得很,更关键的是Node本身异步的数据库I/O性能上比Python真的高很多。
有人说Node缺少“成熟”的大框架,其实这和Node社区的开发思想有关,几个领头的开发者都推崇“写做好一件事的小程序,然后把它们串起来”的Unix哲学,加上npm对于包之间互相依赖处理得很好,所以灵活性其实是Node的卖点之一。在我个人看来,Node并不需要像rails/django这样“大而全"的web框架。
CRUD应用和平台本身没多大关系,更多是看上层的开源库。express + (mongo + mongoose) || (node-mysql + sequelize) 开发CRUD也快得很,更关键的是Node本身异步的数据库I/O性能上比Python真的高很多。
有人说Node缺少“成熟”的大框架,其实这和Node社区的开发思想有关,几个领头的开发者都推崇“写做好一件事的小程序,然后把它们串起来”的Unix哲学,加上npm对于包之间互相依赖处理得很好,所以灵活性其实是Node的卖点之一。在我个人看来,Node并不需要像rails/django这样“大而全"的web框架。
个人接触过Django和少量的Node.js 也在考虑经后的web开发主要使用哪一个? 在我看来,Django更全面,开发一个完整的网站或者cms。 而Node.js的特点也很突出,但是完全用Node.js开发一个完整的网站是不划算的,我更倾向于用Node.js开发RESTful的服务端,可以…
显示全部
个人接触过Django和少量的Node.js
也在考虑经后的web开发主要使用哪一个?
在我看来,Django更全面,开发一个完整的网站或者cms。
而Node.js的特点也很突出,但是完全用Node.js开发一个完整的网站是不划算的,我更倾向于用Node.js开发RESTful的服务端,可以解决高频率的请求,同时也避免事件嵌套的深度。
于是,有了这样的想法,Django做web的开发,在一些需要RESTful或高频请求的部分用Node.js
各自发挥其长处...
也在考虑经后的web开发主要使用哪一个?
在我看来,Django更全面,开发一个完整的网站或者cms。
而Node.js的特点也很突出,但是完全用Node.js开发一个完整的网站是不划算的,我更倾向于用Node.js开发RESTful的服务端,可以解决高频率的请求,同时也避免事件嵌套的深度。
于是,有了这样的想法,Django做web的开发,在一些需要RESTful或高频请求的部分用Node.js
各自发挥其长处...
Disclaimer: 以下对比可能有强烈的个人色彩 Node.js > Python 的地方 快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是
Lars Bak大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了…
显示全部
Disclaimer: 以下对比可能有强烈的个人色彩
Node.js > Python 的地方
Node.js > Python 的地方
- 快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是Lars Bak大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了一个新的阶段。第二是异步执行,Node.js功能上是一个基于V8引擎的异步网络和IO Library,和Python的Twisted很像,不同的是Node.js的event loop是很底层的深入在语言中的,可以想象成整个文件在执行的时候就在一个很大的event loop里。
- npm:npm可以说是用起来最顺手的package management了,npm作为Node.js的官方package management,汇集了整个社区最集中的资源。不像Python经历过easy_install和pip,还有2to3的问题。
- Windows支持:Node.js有微软的加持,Windows基本被视为一等公民来支持,libuv已经可以很好的做到统一跨平台的API;而Python虽然也对Windows有官方的支持,但是总感觉是二等公民,时不时出些问题。
- 语言:就单纯从语言的角度来说,Python写起来要比Javascript舒服很多。Javascript设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一旦庞大,维护还是有困难(不过Node.js的module很大的改善了这个问题)。不过用Coffeescript可以很大的改善Javascript,几乎可以和Python等同。
- 成熟:成熟包括语言本身已经成熟,还有Framework和ecosystem也很庞大。Node.js的绝大多数framework都很新,有的API一直在变,有的感觉已经不在维护,总之没有一个像Django那种百足之虫感觉的framework。Python的主流ORM SQLalchemy也很成熟。
- 异步Style:Node.js的异步Style是CPS,也就是层层callback,基于event,和浏览器中的Javascript很像。CPS好处是让熟悉浏览器Javascript的人能很快上手,学习难度也不大。缺点是逻辑一复杂,就变得很难维护,基本上需要通过async.js这种library,或者用promise。Python的异步除了和Node.js很像的Twisted之外,也有基于coroutine的gevent,coroutine让异步代码维护起来更容易,不过学习曲线陡。
- 应用场景:如果是一个CRUD的app,那么想都不想直接是Python,Node.js本身不擅长CRUD的app(绝大多数Node.js都是直接裸在外面的,而不是有一个Nginx在前面,否则websocket就不能用了,不过新版nginx开始支持websocket),代码又不好维护,而Python的WSGI很适合,成熟的stack也有很多。如果更偏向于real-time,比如一个chat room,那么Node.js实现更容易。这两个应用场景还是有差别的。
前面SUN Rouyu的回答已经很全面了。补充一句,npm和commomjs的require已经超越了一个简单的包管理工具,已经发展成为一种系统架构形式。 另外,我用CoffeeScript写Node.js,可以享受两个世界的好处。 Python虽然也有异步库,但是由于异步不是它的DNA,因此…
显示全部
前面SUN Rouyu的回答已经很全面了。补充一句,npm和commomjs的require已经超越了一个简单的包管理工具,已经发展成为一种系统架构形式。
另外,我用CoffeeScript写Node.js,可以享受两个世界的好处。
Python虽然也有异步库,但是由于异步不是它的DNA,因此不同框架和库的实现是很不一致的。这点对Node.js来说,其异步模式已经成为99%的Modules首先要遵守的规范,这个一致性是一个健壮的后台程序所必须的。
另外,我用CoffeeScript写Node.js,可以享受两个世界的好处。
Python虽然也有异步库,但是由于异步不是它的DNA,因此不同框架和库的实现是很不一致的。这点对Node.js来说,其异步模式已经成为99%的Modules首先要遵守的规范,这个一致性是一个健壮的后台程序所必须的。
必须是python 这里说python不太合理。 如果要对位的话,nodejs对位应该是python的tornado框架。 之前研究过百度的clouda,算是两个都接触过吧。 我重点说说tornado好了,nodejs在tornado面前优势并不大。 首先,
性能 node在性能上相比tornado来说占优,但优…
显示全部
必须是python 这里说python不太合理。
如果要对位的话,nodejs对位应该是python的tornado框架。
之前研究过百度的clouda,算是两个都接触过吧。
我重点说说tornado好了,nodejs在tornado面前优势并不大。
首先, 性能
node在性能上相比tornado来说占优,但优势很小,可以说是language bonus,C++的加成。但是他们的设计思想基本类似,所以性能差距并不大,更何况如果业务处理速度慢了,吞吐量再大也是虚的。
其次, 易用性
这一点基于python的tornado完胜,你可以以同步的形式写出异步代码而不需要借助一大堆回调和闭包,这对于重业务的场景来说是非常注重的,这也是node学习成本陡峭成因,而且一旦使用不好,node一大堆闭包导致的内存爆栈风险想必会折腾每个学习node的人吧。
扩展性
毫无疑问,除了lua,还没有别的语言可以说有python的扩展性便利了,对于计算密集型的业务或者功能可以轻而易举的使用C语言来自定义扩展(我甚至写过一个awk的嵌套编程)。更何况python自身还存在几何倍数于npm的扩展包(呵呵,反驳我的应该也知道,至少npm好多模块简直无法直视,你见过一个模块只有一个函数,里面就一句话的吗?高质量的库数量简直无法跟pypi比,开发门槛在那里呢,所以咬死我都不会承认npm包数量有python多,因为太多垃圾了)。并且你还可以直接对框架层面进行修改跟自定义(当然在许可证许可的条件下),重新定义引擎行为,eventloop行为,自由度高。
可维护性
无需赘言,js代码很难写出python的优雅跟风骚,而且各种callback跟闭包对可读性简直就是灾难。加上js语言本身也有很多坑。这一回合python完胜。
总之,我个人是这么个情况,如果有人拿nodejs跟tornado来说事,我一定会告诉他我非python不用。哪怕要我辞职。
如果要对位的话,nodejs对位应该是python的tornado框架。
之前研究过百度的clouda,算是两个都接触过吧。
我重点说说tornado好了,nodejs在tornado面前优势并不大。
首先, 性能
node在性能上相比tornado来说占优,但优势很小,可以说是language bonus,C++的加成。但是他们的设计思想基本类似,所以性能差距并不大,更何况如果业务处理速度慢了,吞吐量再大也是虚的。
其次, 易用性
这一点基于python的tornado完胜,你可以以同步的形式写出异步代码而不需要借助一大堆回调和闭包,这对于重业务的场景来说是非常注重的,这也是node学习成本陡峭成因,而且一旦使用不好,node一大堆闭包导致的内存爆栈风险想必会折腾每个学习node的人吧。
扩展性
毫无疑问,除了lua,还没有别的语言可以说有python的扩展性便利了,对于计算密集型的业务或者功能可以轻而易举的使用C语言来自定义扩展(我甚至写过一个awk的嵌套编程)。更何况python自身还存在几何倍数于npm的扩展包(呵呵,反驳我的应该也知道,至少npm好多模块简直无法直视,你见过一个模块只有一个函数,里面就一句话的吗?高质量的库数量简直无法跟pypi比,开发门槛在那里呢,所以咬死我都不会承认npm包数量有python多,因为太多垃圾了)。并且你还可以直接对框架层面进行修改跟自定义(当然在许可证许可的条件下),重新定义引擎行为,eventloop行为,自由度高。
可维护性
无需赘言,js代码很难写出python的优雅跟风骚,而且各种callback跟闭包对可读性简直就是灾难。加上js语言本身也有很多坑。这一回合python完胜。
总之,我个人是这么个情况,如果有人拿nodejs跟tornado来说事,我一定会告诉他我非python不用。哪怕要我辞职。
性能的区别 我不觉得很多人的系统会比paypal更复杂 paypal现在全nodejs(后台BI可能还是java) 不过prototype模式构建大型代码有难度 改造成oo 编程难度和写python没区别 callback不是问题 我没用那些改造callback的js库 纯js原生方式 习惯了就好
显示全部
性能的区别
我不觉得很多人的系统会比paypal更复杂
paypal现在全nodejs(后台BI可能还是java)
不过prototype模式构建大型代码有难度
改造成oo 编程难度和写python没区别
callback不是问题 我没用那些改造callback的js库 纯js原生方式
习惯了就好
我不觉得很多人的系统会比paypal更复杂
paypal现在全nodejs(后台BI可能还是java)
不过prototype模式构建大型代码有难度
改造成oo 编程难度和写python没区别
callback不是问题 我没用那些改造callback的js库 纯js原生方式
习惯了就好
不妨再参考下这个:
Node.js 究竟是什么? Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。 为试图解释什么是 …
显示全部
不妨再参考下这个:
Node.js 究竟是什么?
Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。
为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的 Node 教程。阅读本文应该有助于您决定是否应该继续学习 Node,以便将其用于您的业务。
Node.js 究竟是什么?
Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。
为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的 Node 教程。阅读本文应该有助于您决定是否应该继续学习 Node,以便将其用于您的业务。
用过python与nodejs,确实认为python的语言设计,优雅程度都比javascript好,但是实际开发中nodejs确实比python好用 nodejs几大优点: 1. nodejs的环境搭建非常方便,npm包管理也足够好用,几个命令一运行就可以了,而python环境的安装却足够痛苦 2. nodejs…
显示全部
用过python与nodejs,确实认为python的语言设计,优雅程度都比javascript好,但是实际开发中nodejs确实比python好用
nodejs几大优点:
1. nodejs的环境搭建非常方便,npm包管理也足够好用,几个命令一运行就可以了,而python环境的安装却足够痛苦
2. nodejs强制异步,io异步化,mysql异步,http请求异步,而且异步callback是javascript的天然用法,因此实际项目不用太多优化就能比python的同步mysql快很多
3. nodejs与前端统一,实际开发中不需要像python那样进行环境切换,语言切换
4. nodejs的文件系统watch功能极大的方便了测试,编译等等,很大程度上提高了开发效率
5. nodejs今天已经形成巨大的生态:npm上的库是最多的,与后端编程风格非常接近的angularjs,与watch结合的测试框架,webpack,livereload,pm2,所有这些东西对于web开发来说,都远远优于其他语言的开发
6. javascript语言的演进也渐渐让javascript变得更加好用,例如回调逐渐演变为Promise,async/await
nodejs几大优点:
1. nodejs的环境搭建非常方便,npm包管理也足够好用,几个命令一运行就可以了,而python环境的安装却足够痛苦
2. nodejs强制异步,io异步化,mysql异步,http请求异步,而且异步callback是javascript的天然用法,因此实际项目不用太多优化就能比python的同步mysql快很多
3. nodejs与前端统一,实际开发中不需要像python那样进行环境切换,语言切换
4. nodejs的文件系统watch功能极大的方便了测试,编译等等,很大程度上提高了开发效率
5. nodejs今天已经形成巨大的生态:npm上的库是最多的,与后端编程风格非常接近的angularjs,与watch结合的测试框架,webpack,livereload,pm2,所有这些东西对于web开发来说,都远远优于其他语言的开发
6. javascript语言的演进也渐渐让javascript变得更加好用,例如回调逐渐演变为Promise,async/await
Python的gevent带来的非阻塞IO和coroutine同步方式封装异步,足以完爆Twisted; Nodejs的特性也就是非阻塞IO和更快语言解释器,但是基于事件编程模式更合适对用户响应方式的前端,不太合适大部分是RPC或循环方式的服务端逻辑; 现在分布式和SMP架构下 geven…
显示全部
Python的gevent带来的非阻塞IO和coroutine同步方式封装异步,足以完爆Twisted;
Nodejs的特性也就是非阻塞IO和更快语言解释器,但是基于事件编程模式更合适对用户响应方式的前端,不太合适大部分是RPC或循环方式的服务端逻辑;
现在分布式和SMP架构下 gevent多进程+coroutine+简洁的语言特性+容易C/C++性能扩展绝对是理想选择。
Nodejs的特性也就是非阻塞IO和更快语言解释器,但是基于事件编程模式更合适对用户响应方式的前端,不太合适大部分是RPC或循环方式的服务端逻辑;
现在分布式和SMP架构下 gevent多进程+coroutine+简洁的语言特性+容易C/C++性能扩展绝对是理想选择。
刚好两者都接触过。各种网站上的介绍不想重复,谈谈我自己的学习感受。 NodeJs。JavaScript的语法,相比前端能更快的帮助你对模块化和的封装有更深的理解。NodeJS的各种callback回调机制,有时会造成代码嵌套过深,降低没经验的开发者写出来的代码的可读性…
显示全部
刚好两者都接触过。各种网站上的介绍不想重复,谈谈我自己的学习感受。
NodeJs。JavaScript的语法,相比前端能更快的帮助你对模块化和的封装有更深的理解。NodeJS的各种callback回调机制,有时会造成代码嵌套过深,降低没经验的开发者写出来的代码的可读性。单线程+回调函数,程序逻辑有时候会和想象中的不同,一般需要利用一些已有的比如Async库。社区刚起步,一些问题的解决方案很专一(python有时候相对来说可能一个问题有很多不同的选择,可能会让人混乱,不过两者都没问题,看个人喜好)。虽然我之前写过一个用Node的网站,个人感觉代码写的很烂。
python。框架多,可以先从web.py/bottle等轻量级的尝试。python支持很多函数式编程的风格,如果代码写的好,的确会比js写的逻辑清晰。python各种解决方案比较完善,资料也多。个人很喜欢python,怕说多了个人倾向太重,就不多说了。
总之,语言不重要,框架也不重要,性能更没啥考虑的,我觉得尝试新的东西本身就是一件很有趣的事。另外作者是做前端的,那可能js比较纯熟了,可以考虑试试nodejs的express框架。英语ok的话,文档也没啥看不来的。至于node学习曲线陡的问题,个人觉得还好吧,前端er熟悉js有兴趣的话都没啥大问题,node中事件驱动非阻塞等思想还是很有学习价值的~
NodeJs。JavaScript的语法,相比前端能更快的帮助你对模块化和的封装有更深的理解。NodeJS的各种callback回调机制,有时会造成代码嵌套过深,降低没经验的开发者写出来的代码的可读性。单线程+回调函数,程序逻辑有时候会和想象中的不同,一般需要利用一些已有的比如Async库。社区刚起步,一些问题的解决方案很专一(python有时候相对来说可能一个问题有很多不同的选择,可能会让人混乱,不过两者都没问题,看个人喜好)。虽然我之前写过一个用Node的网站,个人感觉代码写的很烂。
python。框架多,可以先从web.py/bottle等轻量级的尝试。python支持很多函数式编程的风格,如果代码写的好,的确会比js写的逻辑清晰。python各种解决方案比较完善,资料也多。个人很喜欢python,怕说多了个人倾向太重,就不多说了。
总之,语言不重要,框架也不重要,性能更没啥考虑的,我觉得尝试新的东西本身就是一件很有趣的事。另外作者是做前端的,那可能js比较纯熟了,可以考虑试试nodejs的express框架。英语ok的话,文档也没啥看不来的。至于node学习曲线陡的问题,个人觉得还好吧,前端er熟悉js有兴趣的话都没啥大问题,node中事件驱动非阻塞等思想还是很有学习价值的~
云天明 cc-by-nc-sa 4.0开放授权,不要求署名,特…
上面有人说了nodejs很重要的一个坑就是无法控制并发量而过载 但是,作为一个server,如果你用nodejs过载,那么基本是因为需求太多,你用别的照样过载。 感觉过载这个坑在普通的脚本上更坑一些啊。 另外服务器函数很多时候可以用setTimeout自己来控制并发的…
显示全部
上面有人说了nodejs很重要的一个坑就是无法控制并发量而过载
但是,作为一个server,如果你用nodejs过载,那么基本是因为需求太多,你用别的照样过载。
感觉过载这个坑在普通的脚本上更坑一些啊。
另外服务器函数很多时候可以用setTimeout自己来控制并发的,我在cli程序上的经验是使用process.beforeExit,这个在server上不合适
另外,es6语言挺好的,不要再黑js了好么,python写个fp试试?js这么优雅灵活的语言对吧,你只要放弃oop和强类型的执念就会发现js是多么的有趣了
嗯,我也同意go是个好语言
但是,作为一个server,如果你用nodejs过载,那么基本是因为需求太多,你用别的照样过载。
感觉过载这个坑在普通的脚本上更坑一些啊。
另外服务器函数很多时候可以用setTimeout自己来控制并发的,我在cli程序上的经验是使用process.beforeExit,这个在server上不合适
另外,es6语言挺好的,不要再黑js了好么,python写个fp试试?js这么优雅灵活的语言对吧,你只要放弃oop和强类型的执念就会发现js是多么的有趣了
嗯,我也同意go是个好语言
杨捷 脚本语言新轮子:http://deflang.org
我用 PHP Node.js Python 写过抓取脚本,简单谈一下吧。 首先PHP。先说优势:网上抓取和解析html的框架一抓一大把,各种工具直接拿来用就行了,比较省心。缺点:首先速度/效率很成问题,有一次下载电影海报的时候,由于是crontab定期执行,也没做优化,开的…
显示全部
我用 PHP Node.js Python 写过抓取脚本,简单谈一下吧。
首先PHP。先说优势:网上抓取和解析html的框架一抓一大把,各种工具直接拿来用就行了,比较省心。缺点:首先速度/效率很成问题,有一次下载电影海报的时候,由于是crontab定期执行,也没做优化,开的php进程太多,直接把内存撑爆了。然后语法方面也很拖沓,各种关键字 符号 太多,不够简洁,给人一种没有认真设计过的感觉,写起来很麻烦。
Node.js。优点是效率、效率还是效率,由于网络是异步的,所以基本如同几百个进程并发一样强大,内存和CPU占用非常小,如果没有对抓取来的数据进行复杂的运算加工,那么系统的瓶颈基本就在带宽和写入MySQL等数据库的I/O速度。当然,优点的反面也是缺点,异步网络代表你需要callback,这时候如果业务需求是线性了,比如必须等待上一个页面抓取完成后,拿到数据,才能进行下一个页面的抓取,甚至多层的依赖关系,那就会出现可怕的多层callback!基本这时候,代码结构和逻辑就会一团乱麻。当然可以用Step等流程控制工具解决这些问题。
最后说Python。如果你对效率没有极端的要求,那么推荐用Python!首先,Python的语法很简洁,同样的语句,可以少敲很多次键盘。然后,Python非常适合做数据的处理,比如函数参数的打包解包,列表解析,矩阵处理,非常方便。
自己最近也在弄一个Python的数据抓取处理工具包,还在修改完善中,欢迎star: yangjiePro/cutout - GitHub
首先PHP。先说优势:网上抓取和解析html的框架一抓一大把,各种工具直接拿来用就行了,比较省心。缺点:首先速度/效率很成问题,有一次下载电影海报的时候,由于是crontab定期执行,也没做优化,开的php进程太多,直接把内存撑爆了。然后语法方面也很拖沓,各种关键字 符号 太多,不够简洁,给人一种没有认真设计过的感觉,写起来很麻烦。
Node.js。优点是效率、效率还是效率,由于网络是异步的,所以基本如同几百个进程并发一样强大,内存和CPU占用非常小,如果没有对抓取来的数据进行复杂的运算加工,那么系统的瓶颈基本就在带宽和写入MySQL等数据库的I/O速度。当然,优点的反面也是缺点,异步网络代表你需要callback,这时候如果业务需求是线性了,比如必须等待上一个页面抓取完成后,拿到数据,才能进行下一个页面的抓取,甚至多层的依赖关系,那就会出现可怕的多层callback!基本这时候,代码结构和逻辑就会一团乱麻。当然可以用Step等流程控制工具解决这些问题。
最后说Python。如果你对效率没有极端的要求,那么推荐用Python!首先,Python的语法很简洁,同样的语句,可以少敲很多次键盘。然后,Python非常适合做数据的处理,比如函数参数的打包解包,列表解析,矩阵处理,非常方便。
自己最近也在弄一个Python的数据抓取处理工具包,还在修改完善中,欢迎star: yangjiePro/cutout - GitHub
Python的作用毕竟大于Node.js前几天看过Node.js,感觉写起来虽然是JS的语法,可是没有了写JS的感觉,不过Node.js还是比较强大的,不过Python更胜一筹,不仅仅是web端,应用端也不少,EVE Online不就是用Python写的么~~
显示全部
Python的作用毕竟大于Node.js前几天看过Node.js,感觉写起来虽然是JS的语法,可是没有了写JS的感觉,不过Node.js还是比较强大的,不过Python更胜一筹,不仅仅是web端,应用端也不少,EVE Online不就是用Python写的么~~
这个有点儿像宗教,也有点儿小马过河的意思。不同的人开发任务不同,风格不同,入门路径不同,会给你不同的答案。
速度 node.js基于libuv和V8,有npm生态;Python也可以基于libuv,pypy,Cython,有更强大的pip管理器。全部加持后,node.js/python/golang在…
显示全部
这个有点儿像宗教,也有点儿小马过河的意思。不同的人开发任务不同,风格不同,入门路径不同,会给你不同的答案。
速度
node.js基于libuv和V8,有npm生态;Python也可以基于libuv,pypy,Cython,有更强大的pip管理器。全部加持后,node.js/python/golang在一个数量级别。
异步
node.js全部是异步,我使用Twisted、Tornado、gevent,Python3后异步选择更多。
技术栈覆盖
node.js、Python都覆盖嵌入式、桌面、服务器,但是Python还覆盖到IC(VHDL),科学数据分析,金融数据分析。但是前端与UI渲染是Javascript的领域。此外,移动APP也是JS胜出。
与其他语言交互
Python的特征之一:可以访问底层语言的,C/C++ DLL/so,Java类库,.net等。所以多用于整合旧有系统。
在许多特定场合,你可以优选node.js。但是Python却也是你绕不过的。
速度
node.js基于libuv和V8,有npm生态;Python也可以基于libuv,pypy,Cython,有更强大的pip管理器。全部加持后,node.js/python/golang在一个数量级别。
异步
node.js全部是异步,我使用Twisted、Tornado、gevent,Python3后异步选择更多。
技术栈覆盖
node.js、Python都覆盖嵌入式、桌面、服务器,但是Python还覆盖到IC(VHDL),科学数据分析,金融数据分析。但是前端与UI渲染是Javascript的领域。此外,移动APP也是JS胜出。
与其他语言交互
Python的特征之一:可以访问底层语言的,C/C++ DLL/so,Java类库,.net等。所以多用于整合旧有系统。
在许多特定场合,你可以优选node.js。但是Python却也是你绕不过的。
匿名用户
得票较多的两个答案都是在 2013 年发布的,我想提提现在的情况(很多答主对 JavaScript 的了解还不够呀)。 Python写起来要比Javascript舒服很多。Javascript设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一…
显示全部
得票较多的两个答案都是在 2013 年发布的,我想提提现在的情况(很多答主对 JavaScript 的了解还不够呀)。
个人观点,我非常喜欢 callback 嵌套参数 passing err 的写法,一是错误优先,而是可以很方便地 catch( if (err) then ... )而不必一层层的 try ... except ...。在开发体验上,我也倾向于 Node 的「原生异步、事件驱动,也可以使用第三方库写同步代码」。另外,Node 的库确实以小而精为主,适合开发 micro services。
由于语言新,没有语言包袱,所以生长起来很有活力。许多库 or 框架借鉴了其他语言的优点,另外由于浏览器厂商疯狂地推动 web 规范指定 & 实现,JavaScript 的改进相当之多。
Python写起来要比Javascript舒服很多。Javascript设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一旦庞大,维护还是有困难以及异步、回调、语法设计缺陷等等问题……:Promise 化,co(利用 yield,ES6 原生支持),ES6 语法 coffeescript,async/await(ES7),decorator,……
个人观点,我非常喜欢 callback 嵌套参数 passing err 的写法,一是错误优先,而是可以很方便地 catch( if (err) then ... )而不必一层层的 try ... except ...。在开发体验上,我也倾向于 Node 的「原生异步、事件驱动,也可以使用第三方库写同步代码」。另外,Node 的库确实以小而精为主,适合开发 micro services。
由于语言新,没有语言包袱,所以生长起来很有活力。许多库 or 框架借鉴了其他语言的优点,另外由于浏览器厂商疯狂地推动 web 规范指定 & 实现,JavaScript 的改进相当之多。
Node.js 的框架express 难度应该与 Python的框架 Django,Tornado,Flask等等差不多。已经熟悉了js,不如还是从Node.js入手。
显示全部
Node.js 的框架express 难度应该与 Python的框架 Django,Tornado,Flask等等差不多。已经熟悉了js,不如还是从Node.js入手。
匿名用户
nodejs使用了libuv这个库来实现异步IO python是个语言。 你可以自由使用select,poll , epoll 等异步io方式,当然也可以使用libuv(如pyuv) 如果很熟悉js的话 nodejs更容易上手些 python语法简单,本身就容易上手 其实拿python和nodejs比还是稍不公平,pytho…
显示全部
nodejs使用了libuv这个库来实现异步IO
python是个语言。 你可以自由使用select,poll , epoll 等异步io方式,当然也可以使用libuv(如pyuv)
如果很熟悉js的话 nodejs更容易上手些
python语法简单,本身就容易上手
其实拿python和nodejs比还是稍不公平,python后面其实还是跟了一大堆框架的
对了python的tornado也是非阻塞的
python是个语言。 你可以自由使用select,poll , epoll 等异步io方式,当然也可以使用libuv(如pyuv)
如果很熟悉js的话 nodejs更容易上手些
python语法简单,本身就容易上手
其实拿python和nodejs比还是稍不公平,python后面其实还是跟了一大堆框架的
对了python的tornado也是非阻塞的