我的解答
现在已经 2020年了,前端开发肯定要会 Node.js 这门技术,(不然很大程度要被淘汰)
下面我简单说几方面的理由。
什么是 Node.js?
首先,Node.js是 Javascript 的运行时环境。
我们开发环境只要安装了node.exe,配置好环境,就能在Node.js中执行 Javascript 代码,这一切和在浏览器运行 99% 一样。就这一点,它不会对你带来任何学习成本。
第二,Node.js 基于 Chrome V8 引擎
通过 V8 引擎,给Node.js提供了一个高效的执行环境,因为它是由 C++ 所编写的,实现了 ECMAScript 和 WebAssembly,并能在 windows、macOs 等平台运行,甚至可以嵌入其他程序应用,让我们前端拥有全平台开发能力。比如 Electron 。
第三,Node.js的异步非阻塞特性
通过事件驱动机制,以及 Javascript 特有的单线程特性,让我们不必担心程序的阻塞问题,也不必接触令人头秃的多线程。
依靠Promise.js、async/await 让我门在异步编程中有非常好的体验。
会Node.js 会带来什么好处?
更快的学习新前端技术
现在无论什么前端技术都离不开Node.js 环境,对于主流的前端框架(Vue、React 等)一定会接触他们提供的脚手架,先不论 webpack 这技术,起码我们事先需要一个 Node.js环境。
总不能依靠 script 标签来异步加载吧?那将脱离前端现在的工程化体系。
更好的融入 npm 社区
依靠Node.js一人是无法像现在一样发展红火的,Node.js 离不开他的好兄弟– npm(包管理器)。当我们有了Node.js 环境,那自然将有 npm 命令环境(就像 Java 里的 JDK、JRE 一样),我们可以在 npm 社区找到各式各样的优秀 Javascript 代码,为我们开发助力。
谋求更好的职业发展
如果你想找到一份不错的工作,通常你可以看到他们对于“前端工程师”的岗位要求有:会Node.js 这条。
现在不是工作不好找,而是我们可能太局限自身的发展,忽视了技术树的发展。
最后
现在是由Node.js带队的大前端发展方向,什么都有可能。虽然没有经历老一辈程序员使用 jQuery 的环境,但对于从事前端开发快 5 年的我来说,每天都充满着挑战。
作为面试官,先说结论 —— 任何一个期望自己走向优秀的前端,nodejs是必须掌握的。
当然从企业提供的岗位而言,或许不会对当前的前端应聘者提出必须掌握node的要求,特别是中低端岗位(类比阿里P6以下),但是前端开发者不应该理解为不需要掌握nodejs。在我看来,必须掌握的原因是:
1、前端业务开发离不开node。
因为现代化的前端项目必须工程化的,而nodejs是提供前端工程化环境的工具。掌握它对于你在需要调整工程方案时,随时上手,随时上位。
何为上位?
对前端而言 —— 在一个还没有leader前端业务团队中,如果不是要空降一个leader,那么谁最有可能被提拔为?那就是前端工程能力最突出的那位。道理很显而易见,有能力决定新项目工程构建的流程,基本上代表他会主导项目的落地,最后他就是事实上的项目leader。
也就是,在我看来任何一个合格的前端leader都应该具备良好的工程能力,否则很难服众,因为“文人相轻”也是技术人的思维习惯。
2、nodejs是前端开发者拓展服务端视野成本最低的方案。
高端的前端岗位基本上要求开发者具备一定跨端的视野和能力。在这里,我说的跨端可以包括跨服务端或客户端,当然跨端不是说一定要前端去做服务端或客户端的业务(当然如果真有这样的能力,业务需要或有机会时也未尝不可),而是你可以站在非前端的角度来看待业务需求,进而更合理的判断、沟通或推动需求落地,避免扯破、推责,这是项目owner必备的技术素养。
3、前端业务的性能优化,掌握nodejs让你多了方案的选择。
性能优化几乎是所有前端项目都会碰到的,或深或浅罢了。掌握nodejs可以比较低成本的实现ssr、api合并等能力,前端页面的首屏和非首屏根据前端逻辑做最合理的拆分,nodejs也是比较合理的技术方案之一。
说了这么多,如果是一个前端入门的开发者提问,我觉得还情有可原。如果你已经工作了几年了还有改不改学的疑问,我觉得要么提问者不适合继续做技术,要么就是太无聊了。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/10237.html