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