python和nodejs对比的区别有:1、python中需要使用virtualenv来分割管理依赖包,而nodejs中通过NPM包管理;2、python中使用from/import进行引入模块;而nodejs引入的其他模块在本模块内都有局部有效的名字;3、python不容易hack,而nodejs非常容易hack;4、两者都是解释性语言,但python缺少动态编译JIT能力,而nodejs v8可以JIT执行javascript,性能要比python好。
具体分析如下:
一、包和模块管理
依赖包多版本管理
不能直接管理python ,需要利用 virtualenv来分割不同的环境
nodejs NPM 包管理,可以同时依赖不同版本的第三方模块
二、引入模块
python 使用 from / import,不同模块同名不好区分
nodejs 模块引入的其他模块在本模块内都有局部有效的名字,更自由,更灵活,更方便
三、导出模块
python
nodejs 直接向 exports 中添加属性,或向 module.exports 赋值即可,并非语言级别,而是简单的普通操作语言本身
四、版本统一性
python 分为 2,3 两个大版本,互相兼容性较差,很多模块需要特定python版本的模块版本,比较混乱
nodejs 版本和API比较稳定统一,而且有NPM 兼容各个版本的依赖模块,版本管理有序,很好的支持了node核心和第三方模块的版本演llj进
五、语法
python 的确比较精炼清晰,特别是丰富的数据结构的支持,简洁的各种运算符代替函数,可以说有丰富的语法糖
nodejs 语言是 javascript,核心更为精简,虽然本身数据结构和数据处理比较简陋,但是使用 coffee-script 可以弥补,coffee-script 简直就是 javascript 版本的 python
六、灵活性
javascript 基于 prototype 的继承更为灵活
nodejs 基于事件的处理使得处处是钩子和扩展点
七、可hack性
python 不容易 hack
javascript 非常容易hack
八、性能
都是解释性语言
python 缺少动态编译JIT能力
nodejs v8 可以 JIT 执行 javascript,性能要更好
九、并发模型
python 需要多线程编程
nodejs 采用非阻塞异步I/O,做非CPU密集型应用非常高效
十、开发质量和效率
都是解释性语言
都无法再编译期进行各种检查
但是 nodejs 有 javascript 语言的各种格式和语法检查器可供使用
可以采用 coffee-script 开发 javascript,吸收了大量的 python 语法糖
十一、build system
nodejs 有完整的build system(grunt/gulp)
nodejs 在 web 开发资源的丰富程度、创新度、活跃度远远高于 python
十二、学习成本
如果只有精力学习一门语言
很定是 javascript,因为至少浏览器前端需要js
js 语言核心更小,更精炼,更多的语法糖和功能是通过模块或库提供
nodejs 本身就可以用作生产web服务器,而 python 至少前面需要 nginx 代理
十三、环境准备
在 windows 默认没有python环境,但是却可以在浏览器中调试器console中练习 javascript