关于node.js的一些看法,吾以为node.js没有想象那么重要。

有人的观点是:“不懂就别说话。”我也不知道如何回应,难道我说出来的东西只能是我精通的吗?那我以后连html都不敢提了。

我并不认为我比其他人更聪明,只是客观冷静的分析一波(我使用过node.js进行一些常规用得到操作)。

首先 :
1、Node.js是一个基于Chrome V8引擎的javascipt的运行环境。
2、Node.js使用了一个事件驱动、非阻塞I/O的模型,
3、Node.js轻量又高效,能够使我们在本地运行javascript

NodeJS能做什么?
1、提供数据给浏览器展示
2、保存用户提交过来的数据
3、数据统计与分析

服务器Node.js和浏览器js的区别是什么?
1.node.js是平台,JavaScript是编程语言;
2.javascript是客户端编程语言,需要浏览器的javascript解释器进行解释执行;
3.node.js是一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境;
4.node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。

先说说好的一方面 : 以前,Javascript只能在前端做做通讯和特效,现在后端也可以用Javascript来做了,好不好?对于前端开发人员来说,当然好,挖掘了JS的技术深度。

嗯,Node.js就能满足前端开发者的这个愿望。

Node.js优点:
1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。
2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。

但是

Node.js缺点:
1、可靠性低
2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

整个前端开发的生态都是在node的基础上搭建起来的,所以没有node,前端开发会变得寸步难行,但是在后台,node只是冰山一角,希望掌握node就能变成全栈工程师,学了JavaScript就能一统天下,这样的想法我也有过,但是现在想想确实很幼稚

前端工程师用得到的与node.js有关的无非是:
1、 npm , 这个操作及其简单,不需要学node.js,只是一些命令行操作
2、 项目打包操作,配置webpack,通常情况有脚手架搭建的项目已经有现成的命令行去帮助打包了,也不需要特地去学node/js,就算不是脚手架搭建的项目,网上也有大把的webpack打包教程.

当然,如果你非说学前端开发还要学会怎么自己开发一个IDE,那我没话说。
吹空调的人可不需要学会制造空调。如果真有多余的精力,不如花在用得到的地方。
绝大部分的前端工程师开发的都是常规的商业项目(比如PC后台,商城,官网,移动端页面.混合app,小程序等),不需要涉及底层。退一步说,就算有这个需求,面向百度编程是可以解决的,再不行,一条路行不通,还不会绕着走吗?换个方法试试?
如果你有想法往底层研发去发展,那么请当我没说。

老夫无时不发现大部分程序员的瓶颈和天花板。即使他们能熟练应用一些框架、工具来实现一些常见的功能,却往往难以领会框架的思想,同时难以跳出这个领域解决其他问题。从他们身上常常看到的问题是,代码逻辑混乱,难以阅读理解复用、瞎用组件到非常极端的情况,不清楚所调用的组件背后的逻辑导致错用。对于边界条件没有清晰的概念,难以有一个好的顶层设计的思维。等等其中相当多的程序员为了提升自己,都会选择补习算法数据结构,计算机组成原理等真正的理论知识。

nodejs只是js生态中的一环,完全没有C/C++/Java来的重要。js也是借了Web的东风,才从一个残废的脚本语言逐渐完善到现在的状态,而且由于发展过快,也导致了语言中很多设计要么难看要么难理解要么难用。无论是上手难度,还是性能、扩展性、对于大型系统的适应性,nodejs及其框架都没有显著的优势。像Java等OOP语言都有完整的面相对象的设计理念和方法论,nodejs又有什么呢?靠无数的npm小包包吗?nodejs只是一个工具,当然我们也要根据场景寻找趁手的工具。对于学校教育而言,nodejs是否是一个足够好的工具能帮助你去学习到背后真正的知识?而当你学会了真正的理论知识、方法论,再去学习nodejs,会更容易上手,也能更好的使用这种工具。

nodejs引擎的实现需要掌握C++

异步机制需要掌握设计模式

网络请求需要掌握网络底层知识,更进一步需要了解网络模型和操作系统提供的实现

Node.js并不是入门程序员必备技能,甚至不是前端必备技能(如果不开发服务端程序,基本就只用npm就够了).JavaScript是可以做很多事情(服务端、桌面端、手机端),但除了开发Web APP,在其他领域并没有明显优势,甚至有些方向劣势还很明显。

毕竟 nodejs 作者都说了,nodejs 有很多设计失误

JavaScript本来是不够稳定的,服务器端本来没有它的一席之地,但是Google的V8把这个解释器做到了极致,而且可以稳定地跨平台,node.js才有可能把它部署到服务器端。

喜欢的事物可以有缺点,不喜欢的事物也可以有优点,优缺点是客观存在的,不以人的主观意志为转移。

node.js虽然也有自己的优点,但是在老牌且成熟的后端语言面前,还是太嫩了。node支撑起现在的前端开发,但在后台,node却是可有可无的,如果阁下感觉在后台某些地方node是不可替代的,可以指点一下我这个孤落寡闻的菜鸡前端程序员。

猜你喜欢

转载自blog.csdn.net/qq_39051175/article/details/105971212
今日推荐