首先 Node.js 和前端用的 JavaScript 是一样的,有前端基础了,上手 Node.js 写点玩具 Web server 或者 REST api 是很容易的。
因为运行环境就是两回事儿了,理解运行环境的工作原理、熟悉提供的 API 远比学习一门语言要麻烦。
前端嘛,就是运行在浏览器环境里,主要需要理解浏览器和HTTP协议,用到 WebSocket 就再多看一个,天天打交道的就是 DOM、XHR 等等一众浏览器提供的 API,当然现在写原生API的人不多了,大多使用在这个基础上封装出来的框架或者库。
Node.js 就复杂一点,尽管它设计之初是拿来写高性能服务的,但发展到今天实际用途已经很广泛了,除了服务器端开发,桌面、命令行工具用得也挺广泛的。
Node.js 本身是 JavaScript(v8) + 事件驱动的异步I/O(libuv) + 基本库。要说有前端的基础,特别是 XHR、File 和 Fetch API 的基础,学习 Node.js 应该是容易的。
但是想要拿 Node.js 解决问题,需要理解问题领域的背景知识、熟悉相关的 API、库和工具链。比如后端可能学习 http(s)协议、Kao/Express之类的框架、REST规范、OAuth、要用 Redis 存 session、MongoDB/MySQL 存数据,上规模的话还要考虑负载均衡、水平扩展、一致性、容灾、安全性等一堆麻烦事儿;而桌面(GUI,OS,Media,fs等)、命令行(shell,term等)之类的也会各有一些自己的领域知识。
就我这儿而言,一个能搞定各种前端麻烦事儿的专家,比前后都会一点儿的前栈,价值要高很多。
avaScript是一门动态脚本语言,可以运行于宿主环境(如,浏览器等包含js引擎的环境)。
浏览器通过内置一个Js引擎可以解释执行js代码,浏览器实现js标准规范(ECMAScript),提供API,可以使用JavaScript调用,支持我们操作页面DOM,调用某些浏览器操作等客户端功能,也可以说JavaScript = ECMAScript + DOM + 宿主环境(BOM),这就是所说的前端js;
而node.Js是一个基于Google V8引擎(js引擎的某一种)构建的JavaScript运行环境,提供API,可以使用JavaScript调用,支持我们读取本地文件,开启本地主机端口服务,发送,接受请求等服务端功能,node.JS = JavaScript + node环境(提供node API...);
所以,如果要执行JavaScript代码,需要一个js引擎,你可以安装一个浏览器(内置js引擎),或nodejs环境(内置js引擎),如果你在js代码中调用了浏览器提供的API,则必须安装一个浏览器,若调用了nodejs API,则必须安装nodejs环境,然后以各自规定的方式加载、执行JavaScript代码。
------------------------------------
一个是基于浏览器端的 javascript (前端 JS)
一个是基于服务端的 javascript (后端 Node.js)
- 语法一样
- 组成不一样
JavaScript:
- ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
- DOM(一些操作页面元素的方法)
- BOM(一些操作浏览器的方法)
Node.js:
- ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
- OS(操作系统)
- file(文件系统)
- net(网络系统)
- database(数据库)
----------------------------------------------