博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NODE.JS学习的常见误区及四大名著
阅读量:4968 次
发布时间:2019-06-12

本文共 1965 字,大约阅读时间需要 6 分钟。

NODE.JS学习的常见误区及四大名著

 

前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为:

NODE.JS之我见:

 

收到了很多兄弟的热情回复和激烈讨论,在此深表感谢,有的朋友觉得我写的比较粗犷,没有给出具体的性能分析和对比,在此我想说的是其实好多东西的性能分析,根本就不用我写到博客上,其一是如果我写了,很多人同样会觉得不客观,不中立,其二是网上很多中立的机构,随便搜索一下,对比太多了,就好比NODE.JS和Nginx的对比,网上客观的分析太多了,只要你能google。

近两年的NODE.JS雄起让很多人觉得JavaScript就要统一全栈了,网上这种言论充斥着各大论坛,仿佛计算机科学里面唯一最NB的就只有JavaScript,其他的只是都是shit,首先需要澄清的是,我并不是愤青,也没有鄙视前端工程师的意图,但是我始终认为,网络上应该有人把一些技术的来龙去脉说清楚,不要轻信谣传,因为实践是检验整理的唯一标准。

那么JavaScript在NODE.JS里面到底是一个什么地位呢?NODE.JS到底是什么呢?我先用一个形象的比喻来说一下,说完了我会稍加分析,懂球的看看是不是这么个道理。JavaScript之比于NODE.JS就像狐狸和老虎的关系,这里面的老虎是C\C++,而NODE.JS只不过是给老虎批了一层薄薄的皮,大家一定都听过狐假虎威,狐狸之所以NB是因为背后站着老虎,而老虎的NB不只是一张皮,是来自于骨子里面的NB。

另一个误区是NODE.JS是单线程的,异步IO,所以效率奇高,非一般服务器所能比拟,当NODE.JS跑起来的时候我建议你抓取一个.dump文件看一下,NODE.JS里面到底有多少个线程,单线程的东西能作出异步IO么?给人的感觉是NODE.JS已经可以跨越OS而存在了,OS本身也做不到的事情NODE.JS却可以做到,据笔者所知,生产环境中的现有异步IO超过99%都是以多线程或者线程池模拟出来的,所以不要相信这样的谣传。来看下面的简单NODE.JS文件IO示例:

 

var fs = require('fs' );var http = require('http' );http.createServer(function(request, response) {var newFile = fs.createWriteStream("readme_copy.md");request.pipe(newFile);request.on('end' , function() {response.end('uploaded!' );});}).listen(8080);

 

这样一个简单的文件IO恐怕最少也要两个线程才能完成,一个线程用于执行JavaScript,另一个用于模拟异步IO。所以在这里得出的结论是JavaScript完全不NB,真正NB的是C\C++,也许你又说了,那为什么C\C++没有取得NODE.JS的火爆程度和高性能,那只是你不知道,Nginx就是一个事实的证明,Nginx的性能可能要比NODE.JS要高一些,纯C打造的, 那为什么当时NODE当时设计的时候没有选用纯C呢?网上有人写文章说是作者觉得C太难了,怕好多人接受不了,而且C的标准库是同步的IO,会让人误用。

另一个常见的误解是前端的JavaScript和NODE.JS里面的JavaScript是一个东西,其实完全不然,虽然语法一样,但是仅此而已,前端的JavaScript只能操作浏览器的一亩三分地,而后端的JavaScript跟像是C的代言人,传说中的狐假虎威,C在OS上能做的事情,他基本都可以做到。

 

下面说说NODE.JS学习的四大名著。

我一般很少推荐国人写的书,因为好多人写的书浮躁,生猛,不自成体系,以吹NB为乐,以让别人看不懂为荣,包括翻译的书,但是在NODE.JS上我第一本要推荐的是朴灵写的<深入浅出NODE.JS>, 看得出来朴灵服务端C代码写的不是很多,但是至少他把NODE.JS讲的很清楚而且确实是懂球的,基本上都是对的,这一点就非常难得,质量上乘,堪比美帝,行文中还可以看出此作者比较谦逊。

我要推荐的另外3本书是如下3本,不多解释了,大家去国外的论坛圈子里转转,或者去亚马逊豆瓣看看书评就懂了。

 

 

 

<Pro Node.js for Developers>

<PROFESSIONAL Node.js ® BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE>

<Single Page Web Applications>

 

 

转载于:https://www.cnblogs.com/pugang/p/4388683.html

你可能感兴趣的文章
ffmpeg如何入门
查看>>
JavaScript中Trim(),TrimStart(),TrimEnd()的实现
查看>>
JavaScript大厦之JS运算符
查看>>
Visualforce控制器
查看>>
9) 依赖查询 & 镜像站
查看>>
MapGuide open source开发心得二: 资源
查看>>
笔记62 | 个人项目“易来”开发记录《一》实现号码测凶吉功能模块
查看>>
乐观锁和悲观锁
查看>>
linux 下 apache启动、停止、重启命令
查看>>
jsidk 上传图片转移到另一个项目遇到的问题
查看>>
学习进度2
查看>>
onbeforeunload与onunload事件
查看>>
通过jenkins自动部署war包到tomcat时遇到的一些问题
查看>>
LeetCode 47. Permutations II
查看>>
Win7承载网络配置——让你的手机无线上网吧
查看>>
随笔?
查看>>
文件上传功能
查看>>
字典示例
查看>>
数据库基本知识(六)-查询
查看>>
Windows server 2012清除并重建SID
查看>>