本人是前端开发工程师,偶尔也做后端(Node.js),来回答一下这个问题。


关于Node.js

Node.js是一个开源、跨平台的JavaScript运行环境,用于在伺服器端执行JavaScript代码。

一直以来,JavaScript主要用于客户端web页面的脚本编程,由用户浏览器的JavaScript引擎来执行。而Node.js则使得JavaScript可以被用于伺服器端脚本编程,用于在伺服器端生成动态的web内容。

Node.js的主要特征是使用事件驱动的非阻塞IO模型,轻量而高效。

借助Node.js,前端开发人员可以使用自己熟悉的编程语言(JavaScript)来完成后端开发,走向全栈开发(fullstack)。

关于Chrome V8

V8是由谷歌(Google)于2008年为其Chrome浏览器打造的开源JavaScript执行引擎。Node.js正是基于V8来构建的,性能卓越,且对最新的ES6语法提供非常完善的支持。因为使用与前端浏览器相同的JavaScript执行引擎,使得JavaScript前后端语法几乎完全一致(虽然因为兼容性问题,前端的ES6代码往往会经由Babel编译为ES5再发送到前端执行)。

后端开发与前端开发的差异

可以肯定的是,Node.js使得前端工程师转向后端的门槛大大降低,反正亦然,从而造就全栈开发的潮流,但是后端开发所使用的技术,以及面临的主要挑战是有很大不同的。

  • 前端JavaScript主要任务是从伺服器端获取数据,并综合使用HTML、CSS将数据以可视化的方式呈现给用户,并处理用户交互。前端高度依赖于DOM API (直接或间接地),所面临的挑战往往是复杂的UI交互、浏览器兼容性问题等等。

  • 后端JavaScript主要是处理来自前端的HTTP请求,从资料库获取相应的数据,执行增删改查,或者调用其它的相关服务(网路、操作系统等等),所面临的挑战往往是安全性、性能、高并发、高可用性、横向扩展等等。

结论

综上所述,掌握了前端JS语法只是使用Node.js的前提条件。Node.js提供的框架(网路、系统调用、文件系统、进程、加密、HTTP/2等等)以及其生态系统(Express、KOA、Sequelize等等)才是需要花费更多时间和精力去学习的东西。


推荐阅读:
相关文章